100 atcoder#ABC212D. [ABC212D] Querying Multiset

[ABC212D] Querying Multiset

配点 : 400400

問題文

高橋君は何も書かれていないたくさんのボールと 11 つの袋を持っています。 最初、袋は空で、高橋君は QQ 回の操作を行います。 それぞれの操作は以下の 33 種類のうちのいずれかです。

  • 操作 11 : まだ何も書かれていないボール 11 つに整数 XiX_i を書き込み、袋に入れる。
  • 操作 22 : 袋に入っているすべてのボールについて、そこに書かれている数を、それに XiX_i を加えたものに書き換える。
  • 操作 33 : 袋に入っているボールのうち書かれている数が最小のもの(複数ある場合はそのうちの 11 つ)を取り出し、そこに書かれている数を記録する。その後、そのボールを捨てる。

1iQ1\leq i\leq Q について ii 回目の操作の種類 PiP_i および操作 11 , 22 における XiX_i の値が与えられるので、操作 33 において記録された数を順に出力してください。

制約

  • 1Q2×1051 \leq Q \leq 2\times 10^5
  • 1Pi31 \leq P_i \leq 3
  • 1Xi1091 \leq X_i \leq 10^9
  • 入力は全て整数である。
  • Pi=3P_i=3 であるような ii11 つ以上存在する。
  • Pi=3P_i=3 であるとき、 ii 回目の操作の直前の時点で、袋には 11 つ以上のボールが入っている。

入力

入力は以下の形式で標準入力から与えられる。

QQ

query1query_1

query2query_2

::

queryQquery_Q

22 行目から Q+1Q+1 行目の各 queryiquery_i は次のいずれかの形で与えられる。

11 XiX_i

22 XiX_i

33

まず、1Pi31\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

高橋君は次のように操作を行います。

  • 33 の書かれたボールを袋に入れる。
  • 55 の書かれたボールを袋に入れる。
  • 今、袋には 33 の書かれたボールと 55 の書かれたボールが入っているため、このうち小さい 33 の書かれたボールを取り出し、 33 を記録した後に捨てる。
  • 今、袋には 55 の書かれたボールのみが入っているため、この数を 5+2=75+2=7 に書き換える。
  • 今、袋には 77 の書かれたボールのみが入っているため、このボールを取り出し、 77 を記録した後に捨てる。

よって、記録された順に 33 , 77 を出力します。

6
1 1000000000
2 1000000000
2 1000000000
2 1000000000
2 1000000000
3
5000000000

答えが 3232 bit整数に収まらないことがある事に注意してください。