[cpp] /***************************************** 題目大意: 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()) { www.2cto.com printf("%d\n",Map.rbegin()->second); Map.erase(Map.find(Map.rbegin()->first));//刪除逆序的隊首元素,注意和刪除順序隊列的區別 } else puts("0"); } } return 0; }