原题链接:
https://pintia.cn/problem-sets/15/problems/841
原题AC代码:
#include<iostream>
#include<queue>
using namespace std;
typedef struct ORDER {
string nm;
int ji;
bool operator <(const struct ORDER& a)const {
//上面这行最后的const关键字需要加进去,否则会编译错误。
return ji > a.ji;
}
}order;
int main() {
int n;
//下面这行必须要写,若不加会超时。
ios_base::sync_with_stdio(false);
cin >> n;
string s;
priority_queue<order> p;
for (int i = 0; i < n; i++) {
cin >> s;
if (s == "PUT") {
order tmp;
cin >> tmp.nm >> tmp.ji;
p.push(tmp);
}
else {
if (s == "GET") {
if (p.size() == 0) {
cout << "EMPTY QUEUE!" << endl;
}
else {
order tmp = p.top();
p.pop();
cout << tmp.nm << endl;
}
}
}
}
return 0;
}
思路:就是利用优先队列的特性完成这一题。
需要注意的地方:
1.优先队列自定义类型的<函数需要重新定义,需要加入const关键字。
2.由于这一题给出的限制时间的要求很严格,只有150ms,所以我们必须加入下面这行代码。
ios_base::sync_with_stdio(false);