D. 最值查询

内存限制:256 MiB 时间限制:200 ms 标准输入输出
题目类型:传统 评测方式:文本比较

题目描述

刚开始有一个为空的多重集 S,有 Q 个操作,操作分为3类:

  • 1 x:表示向 S 中插入一个数 x
  • 2 x c:从 S 中删除 m 个 x, 其中 m=min ( c, S 中 x 的数量)
  • 3:查询 S 中 最大的数与最小的数之差是多少,保证此时 S 不为空

输入格式

第一行一个整数 Q,表示操作次数。

接下来 Q 行整数,每行表示一个操作,参考题面

输出格式

输出 第 3 类操作 的查询结果

样例

样例1

输入

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

输出

1
5
4

样例解释1

操作1: 向S插入3,S = {3}。
操作2: 向S插入2,S = {2,3}。
操作3: 最大值为3,最小值为2,差为1,输出1。
操作4: 向S插入2,S = {2,2,3}。
操作5: 向S插入7,S = {2,2,3,7}。
操作6: 最大值为7最小值为2,输出7-2=5。
操作7: 因为S中只有2个2,所以只删除2个2,S = {3,7}。
操作8: 最大值为7最小值为3,输出7-3=4。

样例2

输入

4
1 10000
1 1000
2 100 3
1 10

输出

 

样例解释2

没有3操作,所以我们什么都不输出。

数据范围与提示

1≤Q≤200000

0≤x≤10^9

1≤c≤Q

所有数均为整数。