当前位置:编程学习 > C/C++ >>

PKU3481(Double Queue)STL-map

[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.zzzyk.com
                printf("%d\n",Map.rbegin()->second);  
                Map.erase(Map.find(Map.rbegin()->first));//删除逆序的队首元素,注意和删除顺序队列的区别  
            }  
            else  
                puts("0");  
        }  
    }  
    return 0;  
}  
补充:软件开发 , C++ ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,