/ Vijos / 题库 /

飞盘游戏

飞盘游戏

时间限制: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

信息

ID
3270
难度
9
分类
数据结构 | 队列单调队列 点击显示
标签
(无)
递交数
1
已通过
1
通过率
100%
被复制
2
上传者