题目描述
你有 n 个数对 (a1,b1),…,(an,bn)。
定义下标 i(1≤i≤n) 的权值为将 a1 个 b1,a2 个 b2,...,ai 个 bi 拼接在一起后形成的数组的最大众数(特别地,若所有数出现次数相同则为最大数)乘以 ai。
接下来你有 m 个操作,分两种:
1 x y
,将 ax 增加 y。保证 y 非负。
2 q
,求最小的正整数 k 使得下标 n−k+1∼n 的权值异或和为 q。
2 操作保证有解,且所有答案之和(记为 ∑k)不超过 5×107。
输入格式
输入的第一行有三个正整数 T,n,m,分别表示测试点编号(样例为 0,Hack 数据是 26∼100 之间的自然数)、数对个数和操作个数。
第二行有 2n 个正整数 a1,b1,a2,b2,…,an,bn,其中第 2i−1 和第 2i 个数分别表示第 i 个数对的 ai,bi。
之后有 m 行,每行有一个操作,格式见题目描述。
输出格式
对于每个 2 操作,输出一行一个正整数表示答案。
0 4 5
2 1 3 3 1 1 1 2
2 0
1 4 6
2 6
1 3 8
2 7
2
4
1
提示
【样例解释】
最开始的四个数组为 (2,1),(3,3),(1,1),(1,2)。以计算下标 2,4 的权值为例展示权值的计算方法:
- 要计算下标 2 的权值,就要把 2 个 1、3 个 3 拼在一起得到 [1,1,3,3,3],最大众数为 3;a2=3,所以权值为 3×3=9。
- 要计算下标 4 的权值,就要把 2 个 1、3 个 3、1 个 1、1 个 2 拼在一起得 [1,1,3,3,3,1,2],最大众数为 3;a4=1,所以权值为 3×1=3。
以此类推,可知下标 1,2,3,4 的权值依次为 2,9,3,3。当 k=2 时,3,4 的权值异或和 3⊕3 恰为 0,符合题意。
接下来将 a4 增加 6 变成 7,显然前 3 个下标权值不变,下标 4 的权值变成 2×7=14。此时所有下标权值异或和 2⊕9⊕3⊕14=6,符合题意,所以此时 k=4。
然后把 a3 增加 8 变成 9。现在 1∼4 的权值依次为 2,9,9,7,此时 k=1,3 时对应的权值异或和都是 7,此时取更小的 k,所以输出 1。
【数据范围】
记 L 为所有操作结束后,所有 ai 的最大值(例如样例中,L=9。)
测试点编号 |
n,m≤ |
特殊性质 |
1∼2 |
30 |
ai,y≤30 |
3∼4 |
500 |
|
5∼7 |
2000 |
8∼9 |
3×105 |
只有 2 操作 |
10 |
bi=1 |
11∼12 |
bi≤2 |
13∼15 |
∑k≤5×105 |
16∼19 |
k≤300 |
20∼25 |
|
对于全部数据,保证 3≤n,m≤3×105,且 1≤bi≤n,1≤ai≤L≤109。
2 操作保证有解,且 ∑k≤5×107。
提示:本题读入量较大,建议选用较快的输入输出方式。