PKU3481(Double Queue)STL-map
来源:互联网 发布:淘宝会员优惠购 编辑:程序博客网 时间:2024/06/07 06:21
/*****************************************题目大意: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;}