#abc253c. [abc253_c]Max - Min Query

[abc253_c]Max - Min Query

题目描述

我们有一个初始为空的整数多重集 SS

给定 QQ 个查询,请按照顺序处理它们。每个查询属于以下类型之一。

  • 1 x:将 xx 插入到 SS 中。

  • 2 x c:从 SS 中删除 xx,删除次数为 m=min(c,(m = \min(c, ( SS 中包含的 xx 的数量))$。

  • 3:输出 SS 中的最大值减去最小值。保证在给定该查询时,SS 不为空。

约束条件

  • 1Q2×1051 \leq Q \leq 2\times 10^5
  • 0x1090 \leq x \leq 10^9
  • 1cQ1 \leq c \leq Q
  • 当提供类型为 3 的查询时,SS 不为空。
  • 输入中的所有值都是整数。

输入格式

输入以标准输入形式给出,格式如下:

QQ query1query_1 \vdots queryQquery_Q

queryiquery_i 表示第 ii 个查询,其格式如下:

11 xx 22 xx cc 33

输出格式

按给定顺序,以换行符分隔的形式输出类型为 3 的查询的答案。


示例输入 1

8
1 3
1 2
3
1 2
1 7
3
2 2 3
3

示例输出 1

1
5
4

多重集 SS 的变化如下。

  • 第一个查询:将 33 插入到 SS 中。此时,SSlbrace3rbrace\\lbrace 3 \\rbrace
  • 第二个查询:将 22 插入到 SS 中。此时,SSlbrace2,3rbrace\\lbrace 2, 3 \\rbrace
  • 第三个查询:SS 中的最大值为 33,最小值为 22,因此输出 32=13-2=1
  • 第四个查询:将 22 插入到 SS 中。此时,SSlbrace2,2,3rbrace\\lbrace 2,2,3 \\rbrace
  • 第五个查询:将 77 插入到 SS 中。此时,SSlbrace2,2,3,7rbrace\\lbrace 2, 2,3, 7\\rbrace
  • 第六个查询:SS 中的最大值为 77,最小值为 22,因此输出 72=57-2=5
  • 第七个查询:由于 SS 中有两个 22,且 min(2,3)=2\\min(2,3) = 2,因此从 SS 中删除 22 两次。此时,SSlbrace3,7rbrace\\lbrace 3, 7\\rbrace
  • 第八个查询:SS 中的最大值为 77,最小值为 33,因此输出 73=47-3=4

示例输入 2

4
1 10000
1 1000
2 100 3
1 10

示例输出 2

如果给定的查询中不包含类型为 3 的查询,则不打印任何内容。