信息学奥赛一本通T1371:堆及其应用 看病

【题目描述】有个朋友在医院工作,想请BSNY帮忙做个登记系统。具体是这样的,最近来医院看病的人越来越多了,因此很多人要排队,只有当空闲时放一批病人看病。但医院的排队不同其他排队,因为多数情况下,需要病情严重的人优先看病,所以希望BSNY设计系统时,以病情的严重情况作为优先级,判断接下来谁可以去看病。【输入】第一行输入n,表示有n个操作。对于每个操作,首先输入push或pop。push的情况,之后会

信息学奥赛一本通T1371:看病

【题目描述】

有个朋友在医院工作,想请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

【源程序】

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<string>
#include<cstdlib>
#include<queue>
#include<vector>
#define INF 0x3f3f3f3f
#define PI acos(-1.0)
#define N 100001
#define MOD 123
#define E 1e-6
using namespace std;

struct Node {
    int num;
    int grade;
    char id[N];
} s;
bool operator < (const Node &x, const Node &y) 
{
    if (x.grade == y.grade)
        return x.num < y.num; 
    return x.grade > y.grade;
}
char str[N], name[N];
priority_queue<Node> q;
int main() {
    int n;
    scanf("%d\n",&n);
    int k = 1;
    for (int i = 1; i <= n; i++) 
    {
        scanf("%s",str);
        if (strcmp(str, "push") == 0) 
        {
            int a;
            scanf("%s%d",name,&a);
            s.grade = k;
            s.num = a;
            for (int j = 0; j < strlen(name); j++)
                s.id[j] = name[j];
            q.push(s); 
        } 
        else 
        {
            if (!q.empty()) 
            {
                s = q.top();
                q.pop();
                printf("%s %d\n", s.id, s.num);
            } 
            else
                printf("none\n");
        }
    }
    return 0;
}

 

信息学奥赛一本通T1371:堆及其应用 看病 归属于 堆及其应用,更多同类题解源程序见:堆及其应用 和 看病

0 条评论

请先 登录 后评论
不写代码的码农
轩爸

0 篇文章

作家榜 »

  1. admin 2 文章
  2. 张芳 0 文章
  3. hanna 0 文章
  4. Jason 0 文章
  5. lixiaioqian 0 文章
  6. GeraldWrora 0 文章
  7. 董伟 0 文章
  8. 信奥达人 0 文章