副队长的堆
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
题目描述
集训队副队长特别喜欢堆这个数据结构,为了检验同学们在课上是否听课,他给出了一道特别模板的堆结构题。
给你一个初始化为空的数组,这个数组支持以下四种操作
- 打印出数组中元素,中间用空格分隔
- 给定一个正整数 , 将整数 添加到数组中
- 输出数组中最小的数
- 删除数列中最小的数(如果有多个数最小,只删除 个)
输入格式
每行表示一次操作,题目保证操作数不超过 。
每行有一个整数 ,表示操作类型
- 若 ,则表示输入结束,要求退出程序
- 若 ,则要求按照堆的层序遍历(先左后右)的顺序打印一行数组中的元素,中间用空格分隔(若数组为空则打印 )
- 若 ,则接下来给出一个正整数(在同一行中) ,表示要将整数 加入数组
- 若 ,则要求打印一行,表示数组中的最小值(若数组为空则打印 )
- 若 ,则要求删除数组中的一个最小值(若数组为空则不操作)
输出格式
对于每个要求输出的操作,输出打印结果
样例输入输出
2 2
2 5
3
4
3
1
0
2
5
5
2 53
2 83
2 57
2 98
2 38
3
1
0
38
38 53 57 98 83
提示
如果你用数组模拟了堆,那么绝大部分情况下,堆的程序遍历就是遍历数组的结果