看病要排队

Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 11832    Accepted Submission(s): 4964

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 <algorithm>
#include <queue>
#include <string>
using namespace std;
typedef long long ll;
const int inf = 0x3f3f3f3f;
const int moder = 1e9 + ;
const int MAXN=; struct node
{
int x,y; // x表示顺序,y表示优先级
friend bool operator < (node p,node q)
{
if(q.y == p.y)
return q.x < p.x;
return q.y > p.y;
}
}s; string ss; int main()
{
int a,b,c,t;
while(scanf("%d",&a) == )
{
t = ;
priority_queue <node>que[];
for(int i=;i < a;i++)
{
cin >> ss;
if(ss[] == 'I')
{
scanf("%d%d",&b,&c);
s.y = c;
s.x = t++;
que[b].push(s);
}
else
{
scanf("%d",&b);
if(!que[b].empty())
{
cout << que[b].top().x << endl;
que[b].pop();
}
else
{
cout << "EMPTY" << endl;
}
}
}
}
return ;
}

最新文章

  1. android intent 传递list或者对象
  2. php简单单例模式
  3. PopupWindow+ListView+OnItemClick点击无效
  4. Linux 改进捕捉信号机制(sigaction,sigqueue)
  5. 一些比较好的shellscript脚本
  6. winform中关于panel中滚动条和键盘事件几点体会
  7. matlab 直方图均衡化
  8. POJ 3096 Surprising Strings(STL map string set vector)
  9. 路由器的nat模式、路由模式和全模式
  10. 微软ajax组件
  11. JFreeChart画折线图
  12. Oracle之range,hash,list分区现实应用及优缺点汇总
  13. java四则运算生成器
  14. bootstrap 响应式图片自适应图片大小
  15. Java工具类 通过ResultSet对象返回对应的实体List集合
  16. C#/.NET基础视频[2018年][195集完]
  17. C# Remoting例子
  18. python3中的urllib.parse的常用方法
  19. border-sizing属性详解和应用
  20. 10-padding(内边距)

热门文章

  1. 最近遇到的bug
  2. Django - 路由层(URLconf)
  3. stark - 增、删、改
  4. Python开发【Django】:时间处理
  5. centos LAMP第一部分-环境搭建 Linux软件删除方式,mysql安装,apache,PHP,apache和php结合,phpinfo页面,ldd命令 第十九节课
  6. SSH secure shell 权威指南(转载)
  7. MapReduce中的Shuffle和Sort分析
  8. Exhibitor(zookeeper监控工具)
  9. JS随机数种子
  10. EF Code First 学习笔记:表映射(转)