题目简介
康夫的好朋友机器猫是个很喜欢零食的人,经常会买很多很多的零食放着,每次康夫饿了都会问他要,可是机器猫只会把价格最低的零食分给康夫吃。由于机器猫的零食实在太多,每次找价格最低的零食非常麻烦。希望你编写一个程序帮助他。
Input
第 1 行:整数 T (1≤T≤10) 为问题数
第 2 行开始的数据:每个问题的第一行是一个整数 n (1≤n≤100 000),表示后面有多少个操作,接下来每行一个操作。操作共有两种形式:
B p 表示机器猫买了一种价格为 p 的零食,其中 p 为整数 (0≤p≤10000)
G 表示机器猫给了康夫一种零食
说明
裸的优先队列题。第一次写,发现greater居然表示从小到大……
#include<bits/stdc++.h>
using namespace std;
priority_queue<int, vector<int>, greater<int> > que;
int main()
{
int cas, t, n;
cin >> cas;
for(t = 0; t < cas; ++t){
cin >> n;
printf("case #%d:\n",t);
while(!que.empty()) que.pop();
for(int i = 1; i <= n; ++i){
string aa;
cin >> aa;
if(aa[0] == 'B'){
int xx;
cin >> xx;
que.push(xx);
}else{
int tmp = que.top();
que.pop();
cout << tmp << endl;
}
}
}
return 0;
}