#L0846. 飞盘传递

飞盘传递

题目描述

Farmer John 的 NN 头奶牛排成一行,高度恰好是 11NN 的一个排列。令 h1,h2,,hNh_1, h_2, \ldots, h_N 表示从左到右每头奶牛的高度。

队伍中位于位置 iijji<ji \lt j)的两头奶牛可以互相传递飞盘,当且仅当她们之间的每一头奶牛的高度都严格小于 min(hi,hj)\min(h_i, h_j)

请求出所有可以互相传递飞盘的位置对 (i,j)(i, j) 之间的距离总和,其中位置 iijj 之间的距离定义为 ji+1j - i + 1

输入格式

第一行包含一个整数 NN1N3×1051 \le N \le 3 \times 10^5)。

第二行包含 NN 个整数 h1,h2,,hNh_1, h_2, \ldots, h_N,用空格分隔,表示奶牛的高度排列。

输出格式

输出一个整数,表示所有可以互相传递飞盘的位置对的距离总和。请注意答案可能超出 32 位整数范围,请使用 64 位整数存储。

样例

7
4 3 1 2 5 6 7
24

提示

可以互相传递飞盘的位置对为:$(1,2), (1,5), (2,3), (2,4), (2,5), (3,4), (4,5), (5,6), (6,7)$。

距离分别为 2,5,2,3,4,2,2,2,22, 5, 2, 3, 4, 2, 2, 2, 2,总和为 2424

数据范围

  • 测试点 1 满足 N=7N = 7,为官方样例。
  • 测试点 2-3 满足 N20N \le 20
  • 测试点 4-6 满足 N5000N \le 5000
  • 测试点 7-10 满足 N3×105N \le 3 \times 10^5
难度 普及
通过率
尝试 0
已通过 0
ID
1574
类型
传统题
Time Limit
1000ms
Memory Limit
256MiB
上传者