分析
使用一个优先队列(小根堆)存储每次进入的优先级,将优先级和进程名称用哈希表进行映射,
#include<bits/stdc++.h>
using namespace std;
int n;
unordered_map<int,string> mp; //哈希表
priority_queue<int,vector<int>,greater<int>> q; //小根堆q
int main()
{
cin>>n;
string op,name;
int pri;
for(int i=0;i<n;i++)
{
cin>>op;
if(op=="PUT")
{
cin>>name>>pri;
mp[pri]=name;
q.push(pri);
}
else{
if(q.size())
{
auto t=q.top();
q.pop();
cout<<mp[t]<<endl; //输出队头所对应的进程名
}
else puts("EMPTY QUEUE!"); //队空
}
}
return 0;
}