#L0766. 增强平衡树

增强平衡树

题目背景

本题是基础平衡树的加强版本,扩大了数据规模并加入了强制在线机制。

输入输出格式与基础版本略有差异,但需要维护的操作集合完全相同。

题目描述

你需要动态维护一个可重集合 MM,支持以下六种操作:

  1. MM 中插入一个数 xx
  2. MM 中删除一个数 xx(若有多个相同元素,只删除一个)。
  3. 查询 MM 中有多少个数严格小于 xx,并将结果加一输出。
  4. 查询将 MM 从小到大排列后,排名为第 xx 位的数。
  5. 查询 MMxx 的前驱(严格小于 xx 的最大数)。
  6. 查询 MMxx 的后继(严格大于 xx 的最小数)。

本题强制在线,保证所有操作合法(操作 22 保证至少存在一个 xx,操作 4,5,64,5,6 保证答案存在)。

输入格式

第一行两个正整数 n,mn,m,分别表示初始集合的大小和操作次数。

第二行 nn 个整数 a1,a2,,ana_1,a_2,\ldots,a_n,表示初始集合中的元素

接下来 mm 行,每行两个整数 opt\text{opt}xx',其中 opt\text{opt} 为操作编号(1opt61 \leq \text{opt} \leq 6),xx' 为加密后的操作参数。

last\text{last} 为上一次 3,4,5,63,4,5,6 号操作的答案(初始为 00),则真实参数 x=xlastx = x' \oplus \text{last}

输出格式

输出一个整数,表示所有 3,4,5,63,4,5,6 号操作答案的异或和

样例

6 7
1 1 4 5 1 4
2 1
1 9
4 1
5 8
3 13
6 7
1 4
6

提示

样例解释

加密前的完整操作序列如下:

6 7
1 1 4 5 1 4
2 1
1 9
4 1
5 9
3 8
6 1
1 0

执行第一个操作前,M={1,1,1,4,4,5}M=\{1,1,1,4,4,5\},完成后 M={1,1,4,4,5}M=\{1,1,4,4,5\}

执行第二个操作后 M={1,1,4,4,5,9}M=\{1,1,4,4,5,9\}

第三个操作查询 MM 中第 11 小的数,答案为 11

第四个操作查询 99 的前驱,答案为 55

第五个操作查询严格小于 88 的数的个数加一,答案为 66

第六个操作查询 11 的后继,答案为 44

第七个操作完成后 M={0,1,1,4,4,5,9}M=\{0,1,1,4,4,5,9\}

输出 1564=61\oplus5\oplus6\oplus4=6

限制与约定

对于 100%100\% 的数据,1n1051\leq n\leq 10^51m1061\leq m\leq 10^60ai,x<2300\leq a_i,x\lt 2^{30}

本题数据量较大,请使用较快的读入方式。

难度 提高+/省选
通过率
尝试 0
已通过 0
ID
1494
类型
传统题
Time Limit
3000ms
Memory Limit
512MiB
上传者