2934. 模拟堆
时间限制:1000 MS 内存限制:128 MB
题目描述
# 模拟堆 ## 题目描述 维护一个集合,初始时集合为空,允许插入数值相同的元素。集合支持以下五种操作: 1. `I x`:插入一个数 $x$。 2. `PM`:输出当前集合中的最小值。 3. `DM`:删除当前集合中的最小值。数据保证执行此操作时,当前最小值唯一。 4. `D k`:删除第 $k$ 个插入的数。 5. `C k x`:将第 $k$ 个插入的数修改为 $x$。 插入编号按照 `I` 操作出现的顺序从 $1$ 开始累计。删除元素不会改变其他元素的插入编号,已使用的编号也不会被再次使用。数值相同的元素仍由各自的插入编号区分。 现在要进行 $N$ 次操作,请对每次 `PM` 操作输出当前集合中的最小值。 ## 输入格式 从文件 `simheap.in` 读入数据。 第一行包含一个整数 $N$,表示操作次数。 接下来 $N$ 行,每行包含一个操作指令,格式为以下之一: - `I x` - `PM` - `DM` - `D k` - `C k x` 其中,$x$ 表示插入或修改后的数值,$k$ 表示元素的插入编号。 ## 输出格式 将结果输出到文件 `simheap.out`。 对于每个 `PM` 操作,输出当前集合中的最小值,每个结果独占一行。 若没有 `PM` 操作,则不输出任何内容。 ## 数据范围 - $1 \le N \le 105$。 - $-10^9 \le x \le 10^9$。 - 数据保证所有操作合法: - 执行 `PM` 或 `DM` 时,集合非空。 - 执行 `D k` 或 `C k x` 时,第 $k$ 个插入的元素仍在集合中。 - 执行 `DM` 时,当前集合中的最小值唯一。 ## 样例输入 ``` 8 I -10 PM I -10 D 1 C 2 8 I 6 PM DM ``` ## 样例输出 ``` -10 6 ```