时间限制:C/C++/Rust/Pascal 3秒,其他语言6秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld
题目描述
给出一个多重集合(元素可以重复的集合),你需要提供以下操作:
-
ADD x,向多重集合里添加一个元素
,多重集合内元素可以重复
-
DEL x,从多重集合中删除一个元素
,保证要删除的元素一定存在,如果存在多个
则仅删除其中任意
个
-
QUE,查询集合中的最小异或对的值,即找到集合中任何两个元素(可以相等)异或能得到的最小值,保证询问时集合包含的元素数量不少于
个
对于每个
QUE操作,你需要输出查询的结果.
以上操作中涉及的操作数

均为非负整数.
输入描述:
第一行输入操作的数量
)
,以下

行每行表示一个操作,操作的格式见题面.对于非负整数

满足

.
输出描述:
对于每个QUE操作,输出一行一个非负整数,表示询问的答案.
示例1
输入
复制
6
ADD 2
ADD 2
ADD 3
QUE
DEL 2
QUE
说明
初始集合:
.
操作
向集合加入元素
,当前集合:
.
操作
向集合加入元素
,当前集合:
.
操作
向集合加入元素
,当前集合:
.
操作
询问集合中的最小异或对,当前选取两个元素的合法方案有
,
,
,所以最小异或对的值为
.
操作
删除集合中元素
,当前集合为:
.
操作
询问集合中的最小异或对,当前选取两个元素的合法方案有
,所以最小异或对的值为
.