Problem4413--看病要排队

4413: 看病要排队

[Creator : ]
Time Limit : 1.000 sec  Memory Limit : 256 MiB

Description

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

Input

输入数据包含多组测试,请处理到文件结束。
每组数据第一行有一个正整数 $N(0<N<2000)$ 表示发生事件的数目。
接下来有 $N$ 行分别表示发生的事件。
一共有两种事件:
1. "IN A B":表示有一个拥有优先级B的病人要求医生 A 诊治。$(0<A \leq 3, 0<B \leq 10)$;
2. "OUT A":表示医生 A 进行了一次诊治,诊治完毕后,病人出院。$(0<A \leq 3)$。

Output

对于每个 "OUT A" 事件,请在一行里面输出被诊治人的编号 ID。如果该事件时无病人需要诊治,则输出 "EMPTY"。
诊治人的编号 ID 的定义为:在一组测试中,"IN A B" 事件发生第K次时,进来的病人 ID 即为 K。从 $1$ 开始编号。

Sample 1 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 1 Output

2
EMPTY
3
1
1

HINT

题目来源:HDU 1873。

Source/Category

STL 3.5.priority_queue