小根堆 越小的整数优先级越大
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<queue>
using namespace std;
priority_queue<int,vector<int> ,greater<int> >q;
int main(){
int n;
scanf("%d",&n);
while(n--){
int flag,num;
scanf("%d",&flag);
if(flag==1){
scanf("%d",&num);
q.push(num);
}
else if(flag==2){
printf("%d\n",q.top());
}
else{
q.pop();
}
}
return 0;
}
STL版
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int heap_size;
int heap[1000005];
void put(int x)
{
heap[++heap_size]=x;
push_heap(heap+1,heap+1+heap_size,greater<int>());
}
int get()
{
return heap[1];
}
void del()
{
pop_heap(heap+1,heap+1+heap_size,greater<int>());
heap_size--;
}
int main()
{
int n;
scanf("%d",&n);
int x;
for(int i=1;i<=n;i++)
{
scanf("%d",&x);
if(x==1) {scanf("%d",&x);put(x);}
else if(x==2) {printf("%d\n",get());}
else if(x==3) del();
}
}
手打版 点我