优先队列的简单应用
1.迭代器可近似理解为指针
#include<bits/stdc++.h>
using namespace std;
struct node {
int id;
int prior;
};
struct cmp{
bool operator () (node a, node b){
if (a.prior == b.prior)
return a.id > b.id;
return a.prior < b.prior;
}
};
int main(){
string s;
int n, A, B, num;//num 记录几个病人
node pati;
priority_queue <node, vector<node>, cmp> doc[4];
while (cin >> n){
num = 0;
for (int i=1; i<=3; ++i)
while (!doc[i].empty()) doc[i].pop();
for (int i=1; i<=n; ++i){
cin >> s;
if (s == "IN"){
cin >> A >> B;
++num;
pati.id = num; pati.prior = B;
doc[A].push(pati);
}
else if (s == "OUT"){
cin >> A;
if (doc[A].empty()) cout << "EMPTY" << endl;
else{
cout << doc[A].top().id << endl;
doc[A].pop();
}
}
}
}
}