5439 - 01字典树:最小异或对

给出一个多重集合(元素可以重复的集合),你需要提供以下操作:

+ x,向多重集合里添加一个元素x,多重集合内元素可以重复
- x,从多重集合中删除一个元素x,保证要删除的元素一定存在,如果存在多个x则仅删除其中任意1个
q,查询集合中的最小异或对的值,即找到集合中任何两个元素(可以相等)异或能得到的最小值,保证询问时集合包含的元素数量不少于2个,对于每个q操作,你需要输出查询的结果.
以上操作中涉及的操作数x均为非负整数.

输入

第一行输入操作的数量(1≤n≤2×10^5),以下 n行每行表示一个操作,对于非负整数x满足0≤ x < 2^30

输出

对于每个q操作,输出一行一个非负整数,表示询问的答案.

样例

输入

6
+ 2
+ 2
+ 3
q
- 2
q

输出

0
1

提示

样例解释 初始集合:{}.

操作1 向集合加入元素2,当前集合:{2}.

操作2 向集合加入元素2,当前集合:{2,2}.

操作3 向集合加入元素3,当前集合:{2,2,3}.

操作4 询问集合中的最小异或对,当前选取两个元素的合法方案有 (2,2), (2,3), (2,3),所以最小异或对的值为2⊕2=0.

操作5 删除集合中元素2,当前集合为:{2,3}.

操作6 询问集合中的最小异或对,当前选取两个元素的合法方案有 (2,3),所以最小异或对的值为2⊕3=1.

时间限制 3 秒
内存限制 512 MB
讨论 统计
上一题 下一题