/*****************************************題目大意:code==1 則k在排隊,k的優先順序為p;code==2 把優先順序最高的做出列處理;code==3 把優先順序最低的做出列處理;演算法思想:用STL中map處理,因為map可以自動排序;將優先順序p作為map的關鍵字;每插入一個元素map會自動排序處理;按照要求輸出處理即可;******************************************/#include<iostream>#include<algorithm>#include<stack>#include<cstring>#include<cstdlib>#include<cstdio>#include<map>using namespace std;int main(){ //freopen("C:\\Users\\Administrator\\Desktop\\kd.txt","r",stdin); int code; map<int,int>Map; while(scanf("%d",&code)&&code) { if(code==1) { int k,p; scanf("%d%d",&k,&p); Map[p]=k; } else if(code==3) { if(!Map.empty()) { printf("%d\n",Map.begin()->second); Map.erase(Map.begin());//刪除順序的隊首元素 } else puts("0"); } else { if (!Map.empty()) { printf("%d\n",Map.rbegin()->second); Map.erase(Map.find(Map.rbegin()->first));//刪除逆序的隊首元素,注意和刪除順序隊列的區別 } else puts("0"); } } return 0;}