#P12865. [JOI Open 2025] 冒泡排序机 / Bubble Sort Machine

    ID: 12626 Type: RemoteJudge 2000ms 1024MiB Tried: 0 Accepted: 0 Difficulty: 6 Uploaded By: Tags>树状数组2025排序可持久化线段树JOI(日本)

[JOI Open 2025] 冒泡排序机 / Bubble Sort Machine

题目背景

译自 JOI Open 2025 T1「Bubble Sort Machine」/ 「バブルソート機」。

题目描述

JOI 君——一名算法工程师,开发了冒泡排序机。

冒泡排序机操作长为 NN 的整数序列 a=(a1,a2,,aN)a=(a_1,a_2,\ldots,a_N)。为了让机器能工作,给定 AiA_i 作为 aia_i1iN1\le i\le N)的初值。每当机器上的按钮壹被按下时,机器会按照如下方式修改序列 aa

对于 i=1,2,,N1i=1,2,\ldots,N-1(按此顺序),若 ai>ai+1a_i\gt a_{i+1},交换 ai,ai+1a_i,a_{i+1} 的值。

为了使冒泡排序机更博人眼球,JOI 君决定加入以下功能:

按钮贰被按下时,给定整数 l,rl,r 作为输入(须满足 1lrN1\le l\le r\le N),机器会输出 al+al+1++ara_{l}+a_{l+1}+\cdots+a_r 的值。

给定整数序列的初值和冒泡排序机的操作序列,编程计算按钮贰的输出值。

输入格式

输入格式如下所示:

NN
A1A_1 A2A_2 \cdots ANA_N
QQ
(Query 1)(\text{Query }1)
(Query 2)(\text{Query }2)
\vdots
(Query Q)(\text{Query }Q)

这里,QQ 指的是冒泡排序机的操作数。每个 (Query j)(\text{Query }j)1jQ1\le j\le Q)由若干个空格分隔的数字组成。令 TjT_j(Query j)(\text{Query }j) 的首个数字。这行的内容为以下二者之一:

  • Tj=1T_j=1,这行再没有其他整数了。这意味着冒泡排序机的第 jj 次操作按下了按钮壹。
  • Tj=2T_j=2,接下来还有两个整数,依次是 Lj,RjL_j,R_j。这意味着冒泡排序机的第 jj 次操作按下了按钮贰,给定的输入为 Lj,RjL_j,R_j

输出格式

对每个按下按钮贰的操作[意思是,对每个满足 Tj=2T_j=2jj1jQ1\le j\le Q)],输出一行一个整数,表示冒泡排序机的输出。你的输出应与询问的顺序相符。

4
5 3 5 2
6
2 1 3
1
2 1 1
2 2 4
1
2 1 2
13
3
12
5
5
1 1 2 1 2
5
2 2 3
1
2 2 4
1
2 2 4
3
4
4

提示

样例解释

样例 11 解释

初值为 a1=5,a2=3,a3=5,a4=2a_1=5,a_2=3,a_3=5,a_4=2a=(5,3,5,2)a=(5,3,5,2)。接下来在冒泡排序机上操作:

  1. 按下按钮贰,输入 l=1,r=3l=1,r=3。机器输出 a1+a2+a3=13a_1+a_2+a_3=13
  2. 按下按钮壹。对 i=1,2,3i=1,2,3,按此顺序进行如下操作:
    • i=1i=1:由于 a1>a2a_1\gt a_2,交换二者的值,操作后 a=(3,5,5,2)a=(3,5,5,2)
    • i=2i=2:由于并没有 a2>a3a_2\gt a_3,不操作 aa
    • i=3i=3:由于 a3>a4a_3\gt a_4,交换二者的值,操作后 a=(3,5,2,5)a=(3,5,2,5)
  3. 按下按钮贰,输入 l=1,r=1l=1,r=1。机器输出 a1=3a_1=3
  4. 按下按钮贰,输入 l=2,r=4l=2,r=4。机器输出 a2+a3+a4=12a_2+a_3+a_4=12
  5. 按下按钮壹。对 i=1,2,3i=1,2,3,按此顺序进行如下操作:
    • i=1i=1:由于并没有 a1>a2a_1\gt a_2,不操作 aa
    • i=2i=2:由于 a2>a3a_2\gt a_3,交换二者的值,操作后 a=(3,2,5,5)a=(3,2,5,5)
    • i=3i=3:由于并没有 a3>a4a_3\gt a_4,不操作 aa
  6. 按下按钮贰,输入 l=1,r=2l=1,r=2。机器输出 a1+a2=5a_1+a_2=5

样例 11 满足子任务 1,5,61,5,6 的限制。

样例 22 解释

样例 22 满足子任务 1,3,5,61,3,5,6 的限制。

数据范围

  • 2N5000002\le N\le 500\, 000
  • 1Ai109(1iN)1\le A_i\le 10^9\, (1\le i\le N)
  • 1Q5000001\le Q\le 500\, 000
  • Tj{1,2}(1jQ)T_j\in \{1,2\}\, (1\le j\le Q)
  • Tj=2T_j=2,有 1LjRjN(1jQ)1\le L_j\le R_j\le N\, (1\le j\le Q)
  • 输入的值都是整数。

子任务

  • Subtask 1 (5 pts)\text{Subtask 1 (5 pts)}:满足 Tj=1T_j=1j(1jQ)j\,(1\le j\le Q) 至多有 1010 个;
  • Subtask 2 (11 pts)\text{Subtask 2 (11 pts)}N,Q150000N,Q\le 150\, 000,当 Tj=2T_j=2Lj=Rj=1(1jQ)L_j=R_j=1\, (1\le j\le Q)
  • Subtask 3 (15 pts)\text{Subtask 3 (15 pts)}N,Q150000N,Q\le 150\, 0001Ai2(1iN)1\le A_i\le 2\, (1\le i\le N)
  • Subtask 4 (23 pts)\text{Subtask 4 (23 pts)}N,Q150000N,Q\le 150\, 000,当 Tj=2T_j=2Lj=Rj(1jQ)L_j=R_j\, (1\le j\le Q)
  • Subtask 5 (29 pts)\text{Subtask 5 (29 pts)}N,Q150000N,Q\le 150\, 000
  • Subtask 6 (17 pts)\text{Subtask 6 (17 pts)}:无额外限制。