题意:
思路: 用优先队列直接模拟就OK了,另外优先队列存pair的时候比较的是first的值,实测!!
上代码:
#include <iostream>
#include <queue>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <queue>
#include <vector>
#define INF 0x3f3f3f3f
#define FRE() freopen("in.txt","r",stdin)
using namespace std;
typedef long long ll;
typedef pair<int,string> P;
const int maxn = 1e5+10;
priority_queue<P, vector<P>, greater<P> > que;
string op,name;
int n,id;
int main() {
//FRE();
cin>>n;
for(int i = 0; i<n; i++) {
cin>>op;
if(op[0]=='P') {
cin>>name>>id;
que.push(P(id, name));
} else {
if(que.empty()){
cout<<"EMPTY QUEUE!"<<endl;
}
else{
P p = que.top();
que.pop();
cout<<p.second<<endl;
}
}
}
return 0;
}
/*
样例输入:
9
PUT msg1 5
PUT msg2 4
GET
PUT msg3 2
PUT msg4 4
GET
GET
GET
GET
样例输出:
msg2
msg3
msg4
msg1
EMPTY QUEUE!
*/