交换统计
题目描述
Y 同学有一个长度为 n 的序列 a1,a2,…,an。
他只会一种非常原始的排序方式:每次选择两个下标 x,y,满足 1≤x<y≤n,然后交换 ax 与 ay。
现在一共会进行 q 次交换操作。对于每次交换操作完成后的序列,你需要统计满足
ai>ai+1
的下标 i 的个数,其中 1≤i<n。
换句话说,你需要在每次交换后输出当前序列中相邻逆序对的数量。
输入格式
第一行包含两个整数 n,q,分别表示序列长度和交换次数。
第二行包含 n 个整数 a1,a2,…,an,表示初始序列。
接下来 q 行,每行包含两个整数 x,y,表示交换位置 x 和位置 y 上的元素。
输出格式
输出共 q 行。
第 i 行输出第 i 次交换完成后,满足 aj>aj+1 的下标 j 的个数。
样例输入 #1
5 3
2 4 3 5 1
1 2
3 5
2 4
样例输出 #1
2
3
1
数据范围与约定
对于 100% 的数据,保证 1≤n,q≤2×105,1≤ai≤n,1≤x<y≤n。
| 测试点编号 |
n,q≤ |
特殊性质 |
| 1∼2 |
500 |
无 |
| 3∼4 |
5000 |
| 5∼6 |
2×105 |
特殊性质 A |
| 7∼8 |
特殊性质 B |
| 9∼12 |
无 |
| 13∼16 |
| 17∼20 |
- 特殊性质 A:所有交换操作均满足 y=x+1。
- 特殊性质 B:初始序列单调不降。