AT_abc212_d [ABC212D] Querying Multiset
题目描述
高桥君有许多没有写字的球和一个袋子。最开始,袋子是空的,高桥君将进行 $Q$ 次操作。每次操作属于以下三种之一:
- 操作 $1$:在一个还没有写字的球上写上整数 $X_i$,然后把它放进袋子。
- 操作 $2$:对袋子里所有的球,将其上写的数都加上 $X_i$。
- 操作 $3$:从袋子里取出写有最小数字的球(如果有多个,任选一个),记录下这个数字,然后把这个球丢弃。
给定每次操作的类型 $P_i$ 以及操作 $1$、$2$ 时的 $X_i$,请按顺序输出每次操作 $3$ 时记录下的数字。
输入格式
输入通过标准输入给出。
第一行为 $Q$。
接下来的 $Q$ 行,每行表示一次操作 $query_i$,格式如下之一:
- $1\ X_i$
- $2\ X_i$
- $3$
其中 $1\leq P_i\leq 3$ 表示操作类型。如果 $P_i=1$ 或 $P_i=2$,则后面跟一个用空格分隔的整数 $X_i$。
输出格式
对于 $Q$ 次操作中每一次 $P_i=3$ 的操作,按顺序输出记录下的数字,每个数字占一行。
说明/提示
### 限制条件
- $1\leq Q\leq 2\times 10^5$
- $1\leq P_i\leq 3$
- $1\leq X_i\leq 10^9$
- 所有输入均为整数。
- 至少存在一次 $P_i=3$ 的操作。
- 每次 $P_i=3$ 操作前,袋子里至少有一个球。
### 样例解释 1
高桥君按如下方式进行操作:
- 把写有 $3$ 的球放入袋子。
- 把写有 $5$ 的球放入袋子。
- 现在袋子里有写有 $3$ 和 $5$ 的球,取出较小的 $3$ 并记录,然后丢弃。
- 现在袋子里只剩写有 $5$ 的球,将其数字加上 $2$ 变为 $7$。
- 现在袋子里只剩写有 $7$ 的球,取出并记录 $7$,然后丢弃。
因此,按顺序输出 $3$ 和 $7$。
### 样例解释 2
请注意,答案可能超出 $32$ 位整数的范围。
由 ChatGPT 4.1 翻译