#P6186. [NOI Online #1 提高组] 冒泡排序
[NOI Online #1 提高组] 冒泡排序
题目描述
给定一个 的排列 ,接下来有 次操作,操作共两种:
- 交换操作:给定 ,将当前排列中的第 个数与第 个数交换位置。
- 询问操作:给定 ,请你求出当前排列经过 轮冒泡排序后的逆序对个数。 对一个长度为 的排列 进行一轮冒泡排序的伪代码如下:
for i = 1 to n-1:
if p[i] > p[i + 1]:
swap(p[i], p[i + 1])
输入格式
第一行两个整数 ,,表示排列长度与操作个数。
第二行 个整数表示排列 。
接下来 行每行两个整数 ,,描述一次操作:
- 若 ,则本次操作是交换操作,;
- 若 ,则本次操作是询问操作,。
输出格式
对于每次询问操作输出一行一个整数表示答案。
3 6
1 2 3
2 0
1 1
1 2
2 0
2 1
2 2
0
2
1
0
提示
样例一解释
第一次操作:排列为 ,经过 0 轮冒泡排序后为 , 个逆序对。
第二次操作:排列变为 。
第三次操作:排列变为 。
第四次操作:经过 轮冒泡排序后排列变为 , 个逆序对。
第五次操作:经过 轮冒泡排序后排列变为 , 个逆序对。
第六次操作:经过 轮冒泡排序后排列变为 , 个逆序对。
数据范围与提示
对于测试点 1 ∼ 2:。
对于测试点 3 ∼ 4:。
对于测试点 5 ∼ 6:交换操作个数不超过 。
对于所有测试点:,,,。