洛谷p3378 堆--基於優先佇列實現
阿新 • • 發佈:2018-12-22
加入了讀入掛,如果去掉greater<int>,則為最大堆
#include<cstdio> #include<queue> //不要忘記標頭檔案 using namespace std; priority_queue<int,vector<int>,greater<int> > q; //定義優先佇列,升序 int n,a,b; inline int read() { int x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f; } int main() { n=read(); for(int i=1;i<=n;i++) { a=read(); if(a==1) //根據題目要求來 { b=read(); q.push(b); //把b壓入優先佇列 } if(a==2) { int ans=q.top(); //獲取現在優先順序最高的元素的值 printf("%d\n",ans); //輸出答案 } if(a==3) q.pop(); //將優先順序最高的元素彈出 } }