#L0766. 增强平衡树

增强平衡树

题目背景

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

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

题目描述

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

  1. 向 MM 中插入一个数 xx。
  2. 从 MM 中删除一个数 xx(若有多个相同元素,只删除一个)。
  3. 查询 MM 中有多少个数严格小于 xx,并将结果加一输出。
  4. 查询将 MM 从小到大排列后,排名为第 xx 位的数。
  5. 查询 MM 中 xx 的前驱(严格小于 xx 的最大数)。
  6. 查询 MM 中 xx 的后继(严格大于 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} 和 x′x',其中 opt\text{opt} 为操作编号(1≤opt≤61 \leq \text{opt} \leq 6),x′x' 为加密后的操作参数。

设 last\text{last} 为上一次 3,4,5,63,4,5,6 号操作的答案(初始为 00),则真实参数 x=x′⊕lastx = 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\}。

输出 1⊕5⊕6⊕4=61\oplus5\oplus6\oplus4=6。

限制与约定

对于 100%100\% 的数据,1≤n≤1051\leq n\leq 10^5,1≤m≤1061\leq m\leq 10^6,0≤ai,x<2300\leq a_i,x\lt 2^{30}。

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

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