AdditionalFile5130.zip
#5130. 「JOI Open 2025」冒泡排序机
标签: 传统 | 时间限制: 2000 ms | 内存限制: 1024 MiB |
题目描述
题目译自 JOI Open 2025 T1 「バブルソート機 / Bubble Sort Machine」
算法研究者 JOI 君开发了一种名为冒泡排序机的设备。
冒泡排序机是一种处理长度为 N 的整数序列 a=(a1,a2,…,aN) 的设备。使用冒泡排序机时,首先需要输入每个 ai (1≤i≤N) 的初始值 Ai。然后,每次按下冒泡排序机的按钮 1,设备会按照以下方法改变整数序列 a:
- 按 i=1,2,…,N−1 顺序执行:如果 ai>ai+1,则交换 ai 和 ai+1 的值。
JOI 君为了让冒泡排序机更具吸引力,决定为其增加以下功能:
- 按下按钮 2,并输入满足 1≤l≤r≤N 的整数 l,r,设备会输出 al+al+1+⋯+ar。
给定输入冒泡排序机的整数序列初始值以及操作步骤的信息,你需要编写一个程序,计算冒泡排序机在每次按下按钮 2 时的输出值。
输入格式
第一行包含一个整数 N。
第二行包含 N 个整数 A1,A2,…,AN。
第三行包含一个整数 Q。
接下来 Q 行,每行描述一次操作,包含 1 个或 3 个用空格分隔的整数。设每行的第一个整数为 Tj,则有:
- 若 Tj=1,该行无其他整数,表示第 j 次操作是按下按钮 1。
- 若 Tj=2,该行后续包含两个整数 Lj,Rj,表示第 j 次操作是按下按钮 2,并输入整数 Lj,Rj。
输出格式
对于每次按下按钮 2 的操作(即 Tj=2 的第 j (1≤j≤Q) 次操作),按顺序输出一行一个整数,表示冒泡排序机的输出值。
样例 1
输入
4
5 3 5 2
6
2 1 3
1
2 1 1
2 2 4
1
2 1 2
输出
13
3
12
5
首先输入初始值 a1=5,a2=3,a3=5,a4=2,初始化为 a=(5,3,5,2)。接下来的冒泡排序机操作如下:
- 按下按钮 2,输入 l=1,r=3,冒泡排序机输出 a1+a2+a3=13。
- 按下按钮 1,对于 i=1,2,3 按顺序执行以下操作:
- 对于 i=1,a1>a2,因此交换值,a 变为 (3,5,5,2)。
- 对于 i=2,a2>a3 不成立,因此 a 不变。
- 对于 i=3,a3>a4 成立,因此交换值,a 变为 (3,5,2,5)。
- 按下按钮 2,输入 l=1,r=1,冒泡排序机输出 a1=3。
- 按下按钮 2,输入 l=2,r=4,冒泡排序机输出 a2+a3+a4=12。
- 按下按钮 1,对于 i=1,2,3 按顺序执行以下操作:
- 对于 i=1,a1>a2 不成立,因此 a 不变。
- 对于 i=2,a2>a3 成立,因此交换值,a 变为 (3,2,5,5)。
- 对于 i=3,a3>a4 不成立,因此 a 不变。
- 按下按钮 2,输入 l=1,r=2,冒泡排序机输出 a1+a2=5。
这个样例满足子任务 1,5,6 的限制。
样例 2
输入
5
1 1 2 1 2
5
2 2 3
1
2 2 4
1
2 2 4
输出
3
4
4
这个样例满足子任务 1,3,5,6 的限制。
数据范围与提示
对于所有输入数据,满足:
- 2≤N≤500000
- 1≤Ai≤109 (1≤i≤N)
- 1≤Q≤500000
- Tj 为 1 或 2 (1≤j≤Q)
- 当 Tj=2 时,1≤Lj≤Rj≤N (1≤j≤Q)
- 输入值均为整数。
详细子任务附加限制及分值如下表所示。
| 子任务 |
分值 |
附加限制 |
| 1 |
5 |
Tj=1 的 j (1≤j≤Q) 数量 ≤10 |
| 2 |
11 |
N≤150000, Q≤150000, Tj=2 时 Lj=Rj=1 (1≤j≤Q) |
| 3 |
15 |
N≤150000, Q≤150000, 1≤Ai≤2 (1≤i≤N) |
| 4 |
23 |
N≤150000, Q≤150000, Tj=2 时 Lj=Rj (1≤j≤Q) |
| 5 |
29 |
N≤150000, Q≤150000 |
| 6 |
17 |
无附加限制 |