题目描述
【模板】普通平衡树(数据加强版)
题目背景
本题是 P3369 数据加强版,扩大数据范围并增加了强制在线。
题目的输入、输出和原题略有不同,但需要支持的操作相同。
题目描述
您需要动态地维护一个可重集合 ,并且提供以下操作:
- 向 中插入一个数 。
- 从 中删除一个数 (若有多个相同的数,应只删除一个)。
- 查询 中有多少个数比 小,并且将得到的答案加一。
- 查询如果将 从小到大排列后,排名位于第 位的数。
- 查询 中 的前驱(前驱定义为小于 ,且最大的数)。
- 查询 中 的后继(后继定义为大于 ,且最小的数)。
本题强制在线,保证所有操作合法(操作 保证存在至少一个 ,操作 保证存在答案)。
输入格式
第一行两个正整数 ,表示初始数的个数和操作的个数。
第二行 个整数 ,表示初始的数。
接下来 行,每行有两个整数 和 , 表示操作的序号(), 表示加密后的操作数。
我们记 表示上一次 操作的答案,则每次操作的 都要异或上 才是真实的 。初始 为 。
输出格式
输出一行一个整数,表示所有 操作的答案的异或和。
输入样例 #1
6 7
1 1 4 5 1 4
2 1
1 9
4 1
5 8
3 13
6 7
1 4
输出样例 #1
6
说明/提示
样例解释
样例加密前为:
6 7
1 1 4 5 1 4
2 1
1 9
4 1
5 9
3 8
6 1
1 0
每一个操作的输出
执行第一个操作前,,完成后 。
执行第二个操作后 。
第三个操作查询 中第 小的数字,答案为 。
第四个操作查询 中 的前驱,答案为 。
第五个操作查询 中有多少个数比 小,并且将答案加 ,答案为 。
第六个操作查询 中 的后继,答案为 。
第七个操作完成后 。
输出 。
本题输入数据较大,请使用较快的读入方式。
:新增加 组 Hack 数据。
输入样例 #2
20 52
9559 9230 9765 9238 9938 9838 10412 10219 8790 8755 10472 8936 8728 10584 10121 8627 10003 9062 9254 10216
3 4913
2 9231
6 5421
3 7925
5 15243
1 10101
6 2063
3 8615
2 3628
3 5211
4 18
4 10576
3 9254
4 17
2 3911
4 10234
2 0
6 28
1 5141
2 3454
5 294
2 6822
5 887
6 12782
2 939
3 6390
6 2926
2 1594
4 8637
3 25067
2 9770
2 10012
4 7
4 9839
3 13446
4 2
4 8786
6 8219
6 9802
1 28075
1 6615
3 11814
3 13757
2 8795
5 9712
2 1983
6 26557
3 3669
4 10
2 3894
5 510
2 901
输出样例 #2
17986
输入样例 #3
20 54
9266 9815 9334 10111 8637 10072 9311 8977 8631 10324 9258 10487 9634 9415 10345 10238 10453 9982 10352 9603
2 9415
2 10072
3 10303
4 0
6 9396
5 8135
2 34
2 3849
2 135
6 13090
2 2016
5 27283
4 10494
3 2674
6 9100
5 6536
2 3593
1 14388
6 13207
1 8874
4 8625
3 2691
1 16
4 18
3 1161
6 3185
4 4297
6 1435
6 8710
5 4534
3 8938
5 7261
2 5086
3 10046
5 12532
3 4244
5 2992
2 10324
4 13
6 13442
3 26777
5 3010
1 8298
4 12
2 733
2 33
3 28569
5 9050
5 13038
2 12457
5 15621
2 10487
5 2317
2 1055
输出样例 #3
11523
限制与约定
对于 的数据,,,。
数据范围
本题强制在线,保证所有操作合法(操作 保证存在至少一个 ,操作 保证存在答案)。
接下来 行,每行有两个整数 和 , 表示操作的序号(), 表示加密后的操作数。
对于 的数据,,,。