HUD1873看病要排队

简介: HUD1873看病要排队

HUD1873看病要排队

Problem Description

看病要排队这个是地球人都知道的常识。

不过经过细心的0068的观察,他发现了医院里排队还是有讲究的。0068所去的医院有三个医生(汗,这么少)同时看病。而看病的人病情有轻重,所以不能根据简单的先来先服务的原则。所以医院对每种病情规定了10种不同的优先级。级别为10的优先权最高,级别为1的优先权最低。医生在看病时,则会在他的队伍里面选择一个优先权最高的人进行诊治。如果遇到两个优先权一样的病人的话,则选择最早来排队的病人。


现在就请你帮助医院模拟这个看病过程。

Input

输入数据包含多组测试,请处理到文件结束。

每组数据第一行有一个正整数N(0<N<2000)表示发生事件的数目。

接下来有N行分别表示发生的事件。

一共有两种事件:

1:“IN A B”,表示有一个拥有优先级B的病人要求医生A诊治。(0<A<=3,0<B<=10)

2:“OUT A”,表示医生A进行了一次诊治,诊治完毕后,病人出院。(0<A<=3)

Output

对于每个"OUT A"事件,请在一行里面输出被诊治人的编号ID。如果该事件时无病人需要诊治,则输出"EMPTY"。

诊治人的编号ID的定义为:在一组测试中,"IN A B"事件发生第K次时,进来的病人ID即为K。从1开始编号。

Sample Input

7
IN 1 1
IN 1 2
OUT 1
OUT 2
IN 2 1
OUT 2
OUT 1
2
IN 1 1
OUT 1

Sample Output

2
EMPTY
3
1
1

分析:优先队列的使用以及运算符重载的使用. 由于每次医生看病根据两个准则,先进行优先级比较,如果优先级相同则按序号就医.所以我们队列里面的是一个结构体类型,我们需要进行运算符重载.之后思路就很简单了,模拟这个过程即可.

参考代码:

#include<iostream>
#include<queue>
#include<string>
using namespace std;
struct Node{
  int id,vip;
//    friend bool operator<(Node X,Node Y){
//    if(X.vip==Y.vip){
//      return X.id > Y.id;//vip一样,id越大,Node越小
//     }else{
//      return X.vip < Y.vip;// vip不同,vip越小,Node越小.
//     }
//   }
  bool operator<(const Node &Y) const{
    if(vip==Y.vip) {
      return  id>Y.id;
    } else {
      return vip<Y.vip;
    }
  }
};
int n,a,b; //b:优先级 
string str;
int main(){
   cin>>n;
   while(~(scanf("%d",&n))){
    Node node;
    node.id = 0;
    priority_queue<Node> q[5];
    while(n--){
      cin>>str;
      if(str=="IN"){
        cin>>a>>b;
        node.id++;
        node.vip = b;
        q[a].push(node);//进栈. 
       }else{
        cin>>a;
        if(q[a].empty()){
          cout<<"EMPTY"<<endl;
         }else{
          cout<<q[a].top().id<<endl;
          q[a].pop();
          //cout<<endl;
         }
       } 
     }
   }
  return 0;
}
相关文章
|
6月前
看病要排队——HDU1873
看病要排队——HDU1873
|
11月前
|
人工智能 图形学
UnityAI——排队过窄洞
UnityAI——排队过窄洞
UnityAI——排队过窄洞
|
6月前
|
C++ 容器
[C++/PTA] 办事大厅排队
[C++/PTA] 办事大厅排队
63 0
|
算法 调度
调度算法 | 先来先服务(超市排队结账模型)
在操作系统中,如何去衡量性能?我们先简化模型,只用一个性能指标去衡量——周转时间,周转时间的定义是任务完成时间减去任务到达系统的时间
170 0
小白鼠排队
小白鼠排队
155 0
|
数据采集 JSON 自然语言处理
公交闹钟 —— 再也不用白等车了
公交闹钟 —— 再也不用白等车了
195 0
公交闹钟 —— 再也不用白等车了
|
机器学习/深度学习 人工智能 算法
看病排队难,阅片机器人什么时候才能让我们加快脚步?
还记得你上次为了看一个X片的结果在医院排队排了多久吗?
看病排队难,阅片机器人什么时候才能让我们加快脚步?
|
传感器 自动驾驶 安全
没有频繁“越权”的安全驾驶员,还敢适当“闯”黄灯,这才是无人出租车正确打开方式
没有频繁“越权”的安全驾驶员,还敢适当“闯”黄灯,这才是无人出租车正确打开方式
132 0
|
监控
怪兽充电 x mPaaS | 拯救你的电量焦虑
电量低的时候,每一毫秒都是流失焦虑。
814 0
怪兽充电 x mPaaS | 拯救你的电量焦虑