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;}

原创粉丝点击