题意:一个人有一个代号K和一个优先等级P,一共有4种操作,0:结束,1:新建一个人,代号为K,优先等级为P,2:输出优先等级最大的人的代码,并删除该人,3:输出优先等级最小的人的代码,并删除该人。
用了C++ STL里的map容器,map容器有一个关键字,map容器自动按关键字排序。用map容器方便了好多呦~
#include<iostream> #include<cstdio> #include<map> using namespace std; map<int ,int> elem; int main() { int n; int k,p; while(scanf("%d",&n)) { if(!n) break; if(n==1) { scanf("%d%d",&k,&p); elem[p]=k; } if(n==2) { if(elem.empty()) cout<<"0"<<endl; else { printf("%d ",elem.rbegin()->second); elem.erase(elem.find(elem.rbegin()->first)); } } if(n==3) { if(elem.empty()) cout<<"0"<<endl; else { printf("%d ",elem.begin()->second); elem.erase(elem.begin()); } } } return 0; }