zoukankan      html  css  js  c++  java
  • 看病

    看病

    链接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1371
    时间限制: 1000 ms         内存限制: 65536 KB

    【题目描述】

    有个朋友在医院工作,想请BSNY帮忙做个登记系统。具体是这样的,最近来医院看病的人越来越多了,因此很多人要排队,只有当空闲时放一批病人看病。但医院的排队不同其他排队,因为多数情况下,需要病情严重的人优先看病,所以希望BSNY设计系统时,以病情的严重情况作为优先级,判断接下来谁可以去看病。

    【输入】

    第一行输入n,表示有n个操作。

    对于每个操作,首先输入push或pop。

    push的情况,之后会输入ai 和 bi,分别表示患者姓名和患者病情优先级。

    pop后面没有输入,但需要你输出。

     

    【输出】

    对于pop的操作,输出此时还在排队人中,优先级最大的患者姓名和优先级。

    表示他可以进去看病了。

    如果此时没人在排队,那么输出”none”,具体可见样例。

    【输入样例】

    7
    pop
    push bob 3
    push tom 5
    push ella 1
    pop
    push zkw 4
    pop

    【输出样例】

    none
    tom 5
    zkw 4
    

    【提示】

    【数据规模和约定】

    1<=n<=100000,每个人的优先级都不一样,0<=优先级<=2000000000。

    姓名都是小写字母组成的,长度小于20。

    #include<iostream>
    #include<cstring>
    #include<cstdio>
    #include<queue>
    using namespace std;
    struct pat{
        string name;
        int num;
        friend bool operator < (pat a,pat b )
        {
            return a.num<b.num;
        }
    };
    priority_queue<pat> Q;
    
    int main()
    {
        int n;
        cin>>n;
        while(n--)
        {
            char order[6];
            scanf("%s",&order);
            if(order[1]=='o')
            {
                if(!Q.size())
                    printf("none
    ");
                else 
                {
                    pat u=Q.top();
                    Q.pop();
                    cout<<u.name<<" "<<u.num<<endl;
                }
            }
            else 
            {
                pat p;
                cin>>p.name>>p.num;
                Q.push(p);
                
            }
        }
    }
  • 相关阅读:
    AW245 你能回答这些问题吗(连续子段和线段树)
    AW256 最大异或和(可持久化0/1trie树)
    AW247 亚特兰蒂斯(区间覆盖线段树)
    P1616 疯狂的采药
    P1060 开心的金明
    AW252 树(点分治)
    AW250 磁力块(分块)
    php绘图(一)
    判断一个文件里面有多少各种格式的图片
    添加图片水印图标
  • 原文地址:https://www.cnblogs.com/EdSheeran/p/8016875.html
Copyright © 2011-2022 走看看