飞盘游戏
时间限制:1秒 内存限制:256M
【题目描述】
有 \(N(N≤300000)\) 名同学的高度分别为 \(1,2,…,N\)。一天,同学们以某个顺序排成一行玩飞盘游戏。设高度依次为\(h_1,h_2,…,h_N\),显然这是 \(1..N\) 的一个排列。
队伍中位于位置 \(i\) 和 \(j\) 的两个同学可以成功地来回扔飞盘,当且仅当他们之间的每个同学的高度都低于 \(min(h_i,h_j)\)。
请计算所有可以成功地来回扔飞盘的同学所在的位置对\(i<j\)之间的距离总和。位置 \(i\) 和\(j\)之间的距离为 \(j-i+1(i<j)\)。
【输入格式】
输入的第一行包含一个整数 \(N\)。第二行包含 \(h_1,h_2,…,h_N\),用空格分隔。
【输出格式】
输出可以成功地来回扔飞盘的奶牛所在的位置对 \(i<j\) 之间的距离总和。
【输入输出样例1】
Input
7
4 3 1 2 5 6 7
Output
24
【样例1说明】
这个例子中可以成功的位置对如下:(1,2), (1,5), (2,3), (2,4), (2,5), (3,4), (4,5), (5,6), (6,7),距离总和为:(2-1)+(5-1)+(3-2)+(4-2)+(5-2)+(4-3)+(5-4)+(6-5)+(7-6)=24。
【测试点性质】
对于 30% 的数据,\(N≤5000\)。
对于 100% 的数据,\(N≤300000\)。
【来源】
Mr.he