#P3481. Double Queue
Double Queue
描述
新成立的巴尔干投资集团银行(BIG-Bank)在布加勒斯特开设了一个新办事处,配备了由IBM罗马尼亚提供的现代化计算环境,并采用先进的信息技术。与往常一样,银行的每位客户由一个正整数 K 标识,当客户到银行办理业务时,会获得一个正整数优先级 P。银行年轻经理们的一项创新提议震惊了服务系统的软件工程师:他们建议有时呼叫优先级最低的客户,而非优先级最高的客户。因此,系统将接收以下类型的请求:
- 0:系统停止服务
- 1 K P:将客户 K 加入等待列表,优先级为 P
- 2:服务优先级最高的客户,并将其从等待列表中移除
- 3:服务优先级最低的客户,并将其从等待列表中移除
你的任务是帮助银行的软件工程师编写一个程序,实现这一服务策略。
输入
输入的每一行包含一个可能的请求;只有最后一行是停止请求(代码0)。可以保证,当请求将新客户加入列表时(代码1),列表中不会存在相同客户或相同优先级的其他请求。客户标识 K 始终小于10^6,优先级 P 始终小于10^7。同一客户可能多次到访,每次可能获得不同的优先级。
输出
对于每个代码为2或3的请求,程序需在标准输出的单独一行中打印被服务客户的标识。如果请求到达时等待列表为空,则程序输出0。
输入样例 1
2
1 20 14
1 30 3
2
1 10 99
3
2
2
0
输出样例 1
0
20
30
10
0
来源
Southeastern Europe 2007