[NOI Online #1 提高组] 冒泡排序
You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.
题目描述
给定一个 的排列 ,接下来有 次操作,操作共两种:
- 交换操作:给定 ,将当前排列中的第 个数与第 个数交换位置。
- 询问操作:给定 ,请你求出当前排列经过 轮冒泡排序后的逆序对个数。 对一个长度为 的排列 进行一轮冒泡排序的伪代码如下:
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:交换操作个数不超过 。
对于所有测试点:,,,。
国庆模拟赛3
- Status
- Done
- Rule
- OI
- Problem
- 4
- Start at
- 2025-10-2 8:30
- End at
- 2025-10-2 12:30
- Duration
- 4 hour(s)
- Host
- Partic.
- 35