atcoder#ABC253C. [ABC253C] Max - Min Query

[ABC253C] Max - Min Query

题目描述

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

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

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

输入格式

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

Q Q query1 \mathrm{query}_1 \vdots queryQ \mathrm{query}_Q

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

1 1 x x

2 2 x x c c

3 3

输出格式

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

题目大意

题目描述

维护一个数组 ssss 初始为空。

按顺序执行 qq 个操作,每个操作都是以下三种之一:

  • 1 x:将 xx 加入 ss
  • 2 x c:将数组中的 xx 去除若干次。设 ddxxss 中出现的次数,那么删除次数将为 c,dc,d 两数中的更小值。
  • 3:输出数组中最大值与最小值的差。保证此时 ss 不为空。

输入格式

第一行输入一个整数 qq

接下来 qq 行,每行一个操作,格式如题。

输出格式

按顺序输出每个 33 型询问的答案。每次回答完要换行。

说明/提示

数据规模与约定

对于全部测试点,数据保证:

  • 1cq2×1051 \le c \le q \le 2 \times 10^5
  • 0x1090 \le x \le 10^9
  • 输入的数值均为整数。
8
1 3
1 2
3
1 2
1 7
3
2 2 3
3
1
5
4
4
1 10000
1 1000
2 100 3
1 10

提示

制約

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

Sample Explanation 1

多重集合 S S は以下のように変化します。 - 1 1 番目のクエリ : S S 3 3 を追加する。S S {3 } \lbrace3\ \rbrace となる。 - 2 2 番目のクエリ : S S 2 2 を追加する。S S {2, 3} \lbrace2,\ 3\rbrace となる。 - 3 3 番目のクエリ : S = { 2, 3} S\ =\ \lbrace\ 2,\ 3\rbrace の最大値は 3 3 、最小値は 2 2 なので、 32=1 3-2=1 を出力する。 - 4 4 番目のクエリ : S S 2 2 を追加する。S S {2,2,3 } \lbrace2,2,3\ \rbrace となる。 - 5 5 番目のクエリ : S S 7 7 を追加する。S S {2, 2,3, 7} \lbrace2,\ 2,3,\ 7\rbrace となる。 - 6 6 番目のクエリ : S = {2,2,3, 7} S\ =\ \lbrace2,2,3,\ 7\rbrace の最大値は 7 7 、最小値は 2 2 なので、 72=5 7-2=5 を出力する。 - 7 7 番目のクエリ : S S に含まれる 2 2 の個数は 2 2 個なので、 min(2,3) = 2 \mathrm{min(2,3)}\ =\ 2 個の 2 2 S S から削除する。S S {3, 7} \lbrace3,\ 7\rbrace となる。 - 8 8 番目のクエリ : S = {3, 7} S\ =\ \lbrace3,\ 7\rbrace の最大値は 7 7 、最小値は 3 3 なので、 73=4 7-3=4 を出力する。

Sample Explanation 2

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