三值逆序对查询
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
【题目描述】
小灰灰最近特别喜欢研究那些很长很简单的序列,他有一个仅由数字 构成的长度为 的序列,第 个元素是 。
小灰灰准备了 次询问,每次给出一个区间 。对于每次询问,你需要求出片段 中逆序对的个数。
如果在这个片段中,存在一对位置满足前面的元素比后面的元素数值大,那么它们就构成一对逆序对。
- 形式化地说,对于一次询问 ,若存在一对有序对 ,满足 且 ,那么这个有序对就是该询问区间内的一对逆序对。
你需要依次回答所有询问。
【输入描述】
第一行输入两个整数 。
第二行输入 个整数,第 个整数表示 。
接下来 行,每行输入两个整数 ,表示一次询问。
保证:
- ;
- ;
- 。
【输出描述】
输出 行,每行一个整数。
第 行表示第 次询问区间内的逆序对个数。
【样例 1】
【样例 1 输入】
5 4
3 1 2 3 1
1 3
2 5
1 5
3 3
【样例 1 输出】
2
2
5
0
【样例 1 解释】
第一次询问的片段为 。
其中 满足 ,构成一对逆序对。
满足 ,也构成一对逆序对。
除此之外没有其它逆序对,所以答案为 。
第四次询问只有一个元素,不存在满足 的位置对,所以答案为 。
【样例 2】
【样例 2 输入】
10 5
2 3 1 2 1 3 2 1 3 1
1 10
1 3
4 8
2 6
8 10
【样例 2 输出】
19
2
5
4
1
【样例 2 解释】
对于第一次询问,统计整个序列中所有满足前面的数大于后面的数的位置对,一共有 对。
【样例 3】
见选手目录下的 Data/sample3.in 和 Data/sample3.ans。
该样例满足 。
【样例 4】
见选手目录下的 Data/sample4.in 和 Data/sample4.ans。
该样例满足 。
【样例 5】
见选手目录下的 Data/sample5.in 和 Data/sample5.ans。
该样例仅满足完整数据范围,无额外限制。
【数据规模与约定】
| 测试点编号 | 分数 | 特殊性质 |
|---|---|---|
1 ~ 3 |
15 | |
4 ~ 6 |
20 | 且询问为 |
7 ~ 9 |
||
10 ~ 12 |
||
13 ~ 15 |
25 | 无额外限制 |
对于 的数据,满足 ,,。