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$ 。