hoj1999-Data Manager(优先队列)

地址:http://acm.hit.edu.cn/hoj/problem/view?id=1999

add :push一个数字

query:输出当前队列最小的数

delete:删除最小的数

完全是优先队列的功能,头文件#include<queue>

优先队列内部具有排序功能,输出优先级高的数字,数字大的为优先级则  priority_queue<int>q

若数字小为优先级则:priority_queue<int, vector<int>, greater<int> >q;

本题就是输出小的

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <queue>
#include <math.h>
#include <stack>
#include <algorithm>
#include <assert.h>
#include <vector>
#include<functional>
#define LL long long
#define inf 0x3f3f3f3f
#define PI acos(-1.0)
#define M 1000000007
using namespace std;

int main()
{
    int t,x;
    char str[10];
    priority_queue<int, vector<int>, greater<int> >q;
    while(scanf("%d",&t)==1)
    {
        while(!q.empty())q.pop();
        while(t--)
        {
            scanf("%s",str);
            if(!strcmp(str,"add"))
            {
                scanf("%d",&x);
                q.push(x);
            }
            else if(!strcmp(str,"query"))
            {
                if(!q.empty()) printf("%d\n",q.top());
            }
            else
            {
                if(!q.empty())q.pop();
            }
        }
    }
    return 0;
}

注意若队列内已经空了就不能再输出和删除了,所以要加上  if(!q.empty())。。。。。。。。。。。。

 

 

posted @ 2013-09-04 22:23  SunnySnail  阅读(147)  评论(0编辑  收藏  举报