#P1288. 异或集合

异或集合

题目描述

有一个集合,一开始是空的。接下来,依次进行 QQ 步操作,每步操作可以是以下三种中的一种:

  • 插入操作以 + 开头,后接一个数字 xx,表示将 xx 加入集合。集合具有重集的性质,可以存放多个相同的整数。
  • 删除操作以 - 开头,后接一个数字 xx,表示将 xx 从集合中删除。如果集合中没有 xx 则忽略这步操作。
  • 查询操作以 ? 开头,后接一个数字 xx,搜索集合中全体元素,与给定的整数 xx 异或所得的最大值,输出这个最大值。如果集合中没有任何元素,输出 00。

输入格式

  • 第一行:单个整数:表示操作数量 QQ
  • 第二行到第 Q+1Q+1 行:每行一条操作,如上所述。

输出格式

5
+ 1
+ 2
? 3
- 1
? 3
2
1

数据范围

  • 30%30\% 的数据,1≤Q≤30001\leq Q\leq 3000,0≤x<2160\leq x<2^{16}
  • 60%60\% 的数据,1≤Q≤300,0001\leq Q\leq 300,000,0≤x<2160\leq x<2^{16}
  • 100%100\% 的数据,1≤Q≤300,0001\leq Q\leq 300,000,0≤x<2640\leq x<2^{64}

来源

改编自 CF706D Vasiliy's Multiset