题目描述
科丁医院想请科丁博士帮忙编写一个挂号系统。具体是这样的,最近来医院看病的人越来越多了,因此很多人要排队,只有当空闲时放一批病人看病。但医院的排队不同其他排队,因为多数情况下,需要病情严重的人优先看病,所以希望科丁博士设计系统时,以病情的严重情况作为优先级,判断接下来谁可以去看病。
输入格式
第一行输入n,表示有n个操作。
对于每个操作,首先输入push或pop。
push的情况,之后会输入ai 和 bi,分别表示患者姓名和患者病情优先级。
pop后面没有输入,但需要你输出。
输出格式
对于pop的操作,输出此时还在排队人中,优先级最大的患者姓名和优先级。
表示他可以进去看病了。
如果此时没人在排队,那么输出”none”,具体可见样例。
输入输出样例
输入样例1:
7 pop push bob 3 push tom 5 push ella 1 pop push zkw 4 pop
输出样例1:
none tom 5 zkw 4
【耗时限制】1000ms 【内存限制】64MB
这道题难点是考察小根堆在结构体中的重载运算符,不能忘了写
代码:
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
struct aj{
LL yx;
string name;
bool operator <(aj x) const{
return yx<x.yx;
}
}a;
string cmd;
priority_queue<aj> pq;
int main()
{
LL n;
cin>>n;
while(n--){
cin>>cmd;
if(cmd=="pop")
if(pq.empty()) cout<<"none"<<endl;
else {cout<<pq.top().name<<" "<<pq.top().yx<<endl;pq.pop();}
else{
cin>>a.name>>a.yx;
pq.push(a);
}
}
return 0;
}
标签:K12182,优先级,看病,系统,样例,pop,挂号,push,输入
From: https://blog.csdn.net/2301_79502610/article/details/140895126