洛谷 P3378 【模板】堆(小根堆)
阿新 • • 發佈:2019-02-18
三種 clas 代碼 輸入 print 支持 load prior cst
題目描述
如題,初始小根堆為空,我們需要支持以下3種操作:
操作1: 1 x 表示將x插入到堆中
操作2: 2 輸出該小根堆內的最小數
操作3: 3 刪除該小根堆內的最小數
輸入輸出格式
輸入格式:
第一行包含一個整數N,表示操作的個數
接下來N行,每行包含1個或2個正整數,表示三種操作,格式如下:
操作1: 1 x
操作2: 2
操作3: 3
輸出格式:
包含若幹行正整數,每行依次對應一個操作2的結果。
輸入輸出樣例
輸入樣例#1:5
1 2
1 5
2
3
2
輸出樣例#1: 2
5
說明
時空限制:1000ms,128M
數據規模:
對於30%的數據:N<=15
對於70%的數據:N<=10000
對於100%的數據:N<=1000000(註意是6個0。。。不過不要害怕,經過編者實測,堆是可以AC的)
樣例說明:
故輸出為2、5
代碼:
#include<cstdio> #include<queue> using namespace std; int n,k,l; priority_queue<int, vector<int>, greater<int> > d; int main() { scanf("%d",&n); for(int i = 1;i <= n; i++) { scanf("%d",&k); if(k == 1) { scanf("%d",&l); d.push(l); } if(k == 2) printf("%d\n",d.top()); if(k == 3) d.pop(); } return 0; }
洛谷 P3378 【模板】堆(小根堆)