题目描述
有一个长度为 n 的排列 a,初始可以任意染白一个数,然后接下来每一步可以染白最小的一个与已经被染白的数相邻的数,显然 n 步之后所有数都会被染白。
现在我们称满足以下要求的数对 (i,j) 是好的数对:
- 1≤i≤j≤n。
- 存在一个 k,满足若从 ai 开始染白,aj 会在第 k 步被染白;若从 aj 开始染白,ai 也会在第 k 步被染白。
求好的数对的数量。
输入格式
由于输入数据过大,现给出数据辅助生成器。
输入两个整数 n 和 s,分别表示排列长度和随机数种子。
你需要恰好调用一次 srand_(s,n)
,在此之后 ai 已经储存在 a[i]
中,注意下标从 1 开始,不要忘记规定数组大小。
输出格式
共一行一个正整数,表示好的数对的数量。
提示
样例解释
对于样例组 #1,a={4,3,1,5,2},好的数对分别是:(1,1),(1,3),(1,5),(2,2),(2,3),(2,4),(3,3),(4,4),(5,5)。
数据范围
「本题采用捆绑测试」
子任务编号 |
n |
特殊性质 |
分值 |
1 |
≤103 |
无 |
15 |
2 |
≤105 |
30 |
3 |
≤107 |
A |
5 |
4 |
无 |
50 |
对于 100% 的数据,保证 1≤n≤107,0≤s≤114514,a 为 n 的排列。
特殊性质 A:ai 单调递增,此时 s=0。