每日一题3:小根堆操作
题目描述
请初始化一个小根堆为空,对于这个小根堆,需要支持以下三种操作:
操作1:输入1 x。表示将x插入到小根堆中。
操作2:输入2。表示输出当前小根堆内的最小数
操作3:输入3。表示删除当前小根堆内的最小数
输入格式
第1行输入正整数N,表示操作个数。
第2~N+1行,每行包含1个或2个正整数,表示三种操作
操作1:输入1 x。
操作2:输入2。
操作3:输入3。
输出格式
对于每个操作2(数字2),每下一行输出对应操作2的结果。
分析
考察小根堆的基本操作,可使用STL的优先队列(priority_queue)完成。
代码
#include<bits/stdc++.h>
using namespace std;
int n,op,x;
priority_queue<int>h;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>op;
switch(op){
case 1:cin>>x;
h.push(-x);
break;
case 2:cout<<-h.top();
break;
case 3:h.pop();
}
}
return 0;
}