zoukankan      html  css  js  c++  java
  • 1371:看病

    【题目描述】

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

    【输入】

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

    对于每个操作,首先输入pushpop

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

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

    【输出】

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

    表示他可以进去看病了。

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

    【输入样例】

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

    【输出样例】

    none
    tom 5
    zkw 4
    

    【提示】

    【数据规模和约定】

    1n1000001≤n≤100000,每个人的优先级都不一样,00≤优先级2000000000≤2000000000。

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

    #include <bits/stdc++.h>
    using namespace std;
    
    struct Node {
        string name;
        int pri;
    
        Node(const string &name, int pri) {
            this->name = name;
            this->pri = pri;
        }
    
        friend bool operator<(const Node &a, const Node &b) {
            return a.pri < b.pri;
        }
    };
    
    int main()
    {
        // freopen("1.txt", "r", stdin);
        int n;
        scanf("%d", &n);
        priority_queue<Node> q;
        char op[10], name[20];
        int pri;
        for (int i = 0; i < n; i++) {
            scanf("%s", op);
            if (op[1] == 'u') { // push
                scanf("%s%d", name, &pri);
                q.push(Node(name, pri));
            } else { // pop
                if (q.empty()) {
                    cout << "none" << endl;
                } else {
                    const Node &t = q.top();
                    printf("%s %d
    ", t.name.c_str(), t.pri);
                    q.pop();
                }
            }
        }
        return 0;
    }
  • 相关阅读:
    Hive_MySQL安装
    Hive_安装部署
    Hive_和关系数据库比较
    Hive_架构原理
    Hive_优缺点
    Hive_什么是Hive
    java中的编码规范(1)
    SpringBoot_常用注解
    什么是WebMvcConfigurer
    什么是大数据倾斜
  • 原文地址:https://www.cnblogs.com/gaojs/p/14947911.html
Copyright © 2011-2022 走看看