#P30839. 模拟堆

模拟堆

Description

维护一个集合,初始时集合为空,支持如下几种操作:


  1. I x,插入一个数 x;
  2. PM,输出当前集合中的最小值; 
  3. DM,删除当前集合中的最小值(数据保证此时的最小值唯一); 
  4. D k,删除第 k个插入的数;
  5. C k x,修改第 k个插入的数,将其变为 x;

现在要进行 <nobr aria-hidden="true" style="box-sizing:border-box;transition:none 0s ease 0s;border:0px;padding:0px;margin:0px;max-width:none;max-height:none;min-width:0px;min-height:0px;vertical-align:0px;line-height:normal;">N</nobr>次操作,对于所有2 个操作,输出当前集合的最小值。





Input Format

第一行包含整数 N。
接下来 N 行,每行包含一个操作指令,操作指令为 I x,PM,DM,D k 或 C k x 中的一种。`

Output Format

对于每个输出指令 PM,输出一个结果,表示当前集合中的最小值。
每个结果占一行。
8
I -10
PM
I -10
D 1
C 2 8
I 6
PM
DM
-10
6

Hint

1≤N≤$10^5$
$−10^9$≤x≤$10^9$
数据保证合法。

Source

2.2数据结构 堆