#3436. Querying Multiset

0

Querying Multiset

Querying Multiset

题目描述

Takahashi 有许多空白的球和一个袋子。 最初,袋子是空的。Takahashi 将执行 QQ 次操作,每次操作是以下三种类型之一。

类型 11:在一个空白球上写下整数 XiX_i 并将其放入袋子。 类型 22:对于袋子中的每个球,将其上写的整数替换为该整数加上 XiX_i。 类型 33:取出袋子中写有最小整数的球(如果有多个这样的球,取出其中任意一个)。记录写在该球上的整数并将其丢弃。

对于每个 1≤i≤Q1\leq i\leq Q,给出第 ii 次操作的类型 PiP_i,以及如果该操作是类型 11 或 22 时的值 XiX_i。按顺序输出在类型 33 的操作中记录下的整数。

输入格式

输入从标准输入按以下格式给出: QQ query1query_1 query2query_2 : queryQquery_Q

第 22 行到第 (Q+1)(Q+1)行的每个 行的每个 query_i$ 的格式为: 11 XiX_i

22 XiX_i

33

每行的第一个数字为 1≤Pi≤31\leq P_i\leq 3,表示操作的类型。 如果 Pi=1P_i=1 或 Pi=2P_i=2,则之后有一个空格,随后是 XiX_i。

输出格式

对于这 QQ 次操作中每个 Pi=3P_i=3 操作,单独一行打印记录下的整数。

5
1 3
1 5
3
2 2
3
3
7
6
1 1000000000
2 1000000000
2 1000000000
2 1000000000
2 1000000000
3
5000000000

提示

1≤Q≤2×1051 \leq Q \leq 2\times 10^5 1≤Pi≤31 \leq P_i \leq 3 1≤Xi≤1091 \leq X_i \leq 10^9 输入中的所有值均为整数。 存在一个或多个 ii 使得 Pi=3P_i=3。 如果 Pi=3P_i=3,则在第 ii 次操作之前袋子中至少有一个球。Takahashi 将执行以下操作。

在一个球上写下 33 并把它放入袋子。 在一个球上写下 55 并把它放入袋子。 袋子现在包含一个写有 33 的球和另一个写有 55 的球。取出较小的那个,即 33。记录 33 并将其丢弃。 袋子现在只剩下一个写有 55 的球。将该整数替换为 5+2=75+2=7。 袋子现在只剩下一个写有 77 的球。取出该球,记录 77,并将其丢弃。

因此,我们应该按记录的顺序打印 33 和 77。
注意输出可能超出 32 位整数的范围。

标签: AtCoder|abc212D

来源

AtCoder|abc212D