CF1732D2 Balance (Hard version)
题目描述
# Balance (Hard version)
这是原题的加强版(就是加上了删除操作啦)。
最初你有一个集合,该集合仅包括一个元素 $0$ 。你需要处理 $q$ 个下述类型的操作:
- `+ x` 向集合中添加一个整数 $x$ 。数据保证集合中原来没有这个整数。
- `- x` 从集合中移除整数 $x$ 。数据保证集合包含这个就要删除的整数。
- `? k` 找出当前是 $k$ 的倍数且不被包含在集合中的最小非负整数 $x$ 。
除 $q$ 外,本题涉及的数据都在 $10^{18}$ 内。
输入格式
第一行:一个整数 $q$ ,表示询问的个数。($1 \leq q \leq 2 · 10^5$)
接下来 $q$ 行,描述题目对你的询问,格式如上文。
数据保证至少会有一个 `? k` 询问。
输出格式
对于每一个 `? k` 询问,输出一个整数 $x$ ,表示当前是 $k$ 的倍数且不被包含在集合中的最小非负整数 $x$ 。
说明/提示
**对于第一个样例:**
在第一次和第二次**查询**之后,集合将包含元素 $\{0,1,2\}$ 。是 $1$ 的倍数且不在集合中的最小非负数为 $3$ 。
在第四次**查询**之后,集合将包含元素 $\{0,1,2,4\}$ 。是 $2$ 的倍数且不在集合中的最小非负数是 $6$ 。
**对于第二个样例:**
- 最初,集合只包含元素 $\{0\}$ 。
- 添加整数 $100$ 后,集合包含元素 $\{0,100\}$ 。
- 集合的 $x$ 为 $200$ 。
- 添加整数 $200$ 后,集合包含元素 $\{0,100,200\}$ 。
- 集合的 $x$ 为 $300$ 。
- 移除整数 $100$ 后,该集合包含元素 $\{0,200\}$ 。
- 集合的 $x$ 为 $100$ 。
- 添加整数 $50$ 后,集合包含元素 $\{0,50,200\}$ 。
- 集合的 $x$ 为 $100$ 。
- 移除整数 $50$ 后,该集合包含元素 $\{0,200\}$ 。
- 集合的 $x$ 为 $50$ 。