题目描述
给出一个长度为 n 的排列 a。定义一个子区间 [l,r] 中 ai 的最小值为 min[l,r],ai 的最大值为 max[l,r]。对于所有子区间三元组 ([l1,r1],[l2,r2],[l3,r3]) 使得 1≤l1≤r1<l2≤r2<l3≤r3≤n,求 max(0,min[l2,r2]−max[l1,r1])×max(0,min[l2,r2]−max[l3,r3]) 之和,对 9712176 取模。
输入格式
第一行,一个正整数 n,表示排列的长度。
第二行,n 个正整数 a,表示给出的排列 a。
输出格式
一行,一个正整数,表示 max(0,min[l2,r2]−max[l1,r1])×max(0,min[l2,r2]−max[l3,r3]) 之和,对 9712176 取模。
提示
样例解释
对于样例 1:
- ([l1,r1],[l2,r2],[l3,r3])=([1,1],[2,2],[3,3]):max(0,min[l2,r2]−max[l1,r1])×max(0,min[l2,r2]−max[l3,r3])=0;
- ([l1,r1],[l2,r2],[l3,r3])=([1,1],[2,2],[3,4]):max(0,min[l2,r2]−max[l1,r1])×max(0,min[l2,r2]−max[l3,r3])=0;
- ([l1,r1],[l2,r2],[l3,r3])=([1,1],[2,2],[4,4]):max(0,min[l2,r2]−max[l1,r1])×max(0,min[l2,r2]−max[l3,r3])=2;
- ([l1,r1],[l2,r2],[l3,r3])=([1,1],[2,3],[4,4]):max(0,min[l2,r2]−max[l1,r1])×max(0,min[l2,r2]−max[l3,r3])=2;
- ([l1,r1],[l2,r2],[l3,r3])=([1,1],[3,3],[4,4]):max(0,min[l2,r2]−max[l1,r1])×max(0,min[l2,r2]−max[l3,r3])=6;
- ([l1,r1],[l2,r2],[l3,r3])=([1,2],[3,3],[4,4]):max(0,min[l2,r2]−max[l1,r1])×max(0,min[l2,r2]−max[l3,r3])=2;
- ([l1,r1],[l2,r2],[l3,r3])=([2,2],[3,3],[4,4]):max(0,min[l2,r2]−max[l1,r1])×max(0,min[l2,r2]−max[l3,r3])=2。
所有 ([l1,r1],[l2,r2],[l3,r3]) 的 max(0,min[l2,r2]−max[l1,r1])×max(0,min[l2,r2]−max[l3,r3]) 总和为 0+0+2+2+6+2+2=14。
数据范围
本题采用捆绑测试。
Subtask |
特殊性质 |
Score |
1 |
n≤60 |
5 |
2 |
n≤100 |
9 |
3 |
n≤200 |
4 |
n≤500 |
5 |
n≤2000 |
19 |
6 |
n≤6000 |
11 |
7 |
n≤105 |
19 |
8 |
无特殊限制 |
对于 100% 的数据:1≤n≤106,1≤ai≤n,保证 a 为 {1,2,…,n} 的一个排列。