#P6136. 【模板】普通平衡树(数据加强版)

【模板】普通平衡树(数据加强版)

题目背景

本题是 P3369 数据加强版,扩大数据范围并增加了强制在线。

题目的输入、输出和原题略有不同,但需要支持的操作相同。

题目描述

您需要写一种数据结构(可参考题目标题),来维护一些整数,其中需要提供以下操作:

  1. 插入一个整数 xx。
  2. 删除一个整数 xx(若有多个相同的数,只删除一个)。
  3. 查询整数 xx 的排名(排名定义为比当前数小的数的个数 +1+1)。
  4. 查询排名为 xx 的数(如果不存在,则认为是排名小于 xx 的最大数。保证 xx 不会超过当前数据结构中数的总数)。
  5. 求 xx 的前驱(前驱定义为小于 xx,且最大的数)。
  6. 求 xx 的后继(后继定义为大于 xx,且最小的数)。

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

输入格式

第一行两个正整数 n,mn,m,表示初始数的个数和操作的个数。

第二行 nn 个整数 a1,a2,a3,…,ana_1,a_2,a_3,\ldots,a_n,表示初始的数。

接下来 mm 行,每行有两个整数 opt\text{opt} 和 x′x',opt\text{opt} 表示操作的序号(1≤opt≤6 1 \leq \text{opt} \leq 6 ),x′x' 表示加密后的操作数。

我们记 last\text{last} 表示上一次 3,4,5,63,4,5,6 操作的答案,则每次操作的 x′x' 都要异或上 last\text{last} 才是真实的 xx。初始 last\text{last} 为 00。

输出格式

输出一行一个整数,表示所有 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

限制与约定

对于 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}。

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


upd 2022.7.22\text{upd 2022.7.22}:新增加 99 组 Hack 数据。