atcoder#ABC253C. [ABC253C] Max - Min Query

[ABC253C] Max - Min Query

配点 : 300300

問題文

整数の多重集合 SS があります。はじめ SS は空です。

QQ 個のクエリが与えられるので順に処理してください。 クエリは次の 33 種類のいずれかです。

  • 1 x : SSxx11 個追加する。
  • 2 x c : SS から xxmin(c,\mathrm{min}(c, (S(S に含まれる xx の個数 )))) 個削除する。
  • 3 : (S(S の最大値 ))- (S(S の最小値 )) を出力する。このクエリを処理するとき、 SS が空でないことが保証される。

制約

  • 1Q2×1051 \leq Q \leq 2\times 10^5
  • 0x1090 \leq x \leq 10^9
  • 1cQ1 \leq c \leq Q
  • 3 のクエリを処理するとき、SS は空でない。
  • 入力は全て整数

入力

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

QQ

query1\mathrm{query}_1

\vdots

queryQ\mathrm{query}_Q

ii 番目のクエリを表す queryi\mathrm{query}_i は以下の 33 種類のいずれかである。

11 xx

22 xx cc

33

出力

3 のクエリに対する答えを順に改行区切りで出力せよ。

8
1 3
1 2
3
1 2
1 7
3
2 2 3
3
1
5
4

多重集合 SS は以下のように変化します。

  • 11 番目のクエリ : SS33 を追加する。SS{3}\lbrace3 \rbrace となる。
  • 22 番目のクエリ : SS22 を追加する。SS{2,3}\lbrace2, 3\rbrace となる。
  • 33 番目のクエリ : S={2,3}S = \lbrace 2, 3\rbrace の最大値は 33 、最小値は 22 なので、 32=13-2=1 を出力する。
  • 44 番目のクエリ : SS22 を追加する。SS{2,2,3}\lbrace2,2,3 \rbrace となる。
  • 55 番目のクエリ : SS77 を追加する。SS{2,2,3,7}\lbrace2, 2,3, 7\rbrace となる。
  • 66 番目のクエリ : S={2,2,3,7}S = \lbrace2,2,3, 7\rbrace の最大値は 77 、最小値は 22 なので、 72=57-2=5 を出力する。
  • 77 番目のクエリ : SS に含まれる 22 の個数は 22 個なので、 min(2,3)=2\mathrm{min(2,3)} = 2 個の 22SS から削除する。SS{3,7}\lbrace3, 7\rbrace となる。
  • 88 番目のクエリ : S={3,7}S = \lbrace3, 7\rbrace の最大値は 77 、最小値は 33 なので、 73=47-3=4 を出力する。
4
1 10000
1 1000
2 100 3
1 10

クエリ 33 が含まれない場合、何も出力してはいけません。