#P1281. MANAGER
MANAGER
描述
并行处理中的一种编程范式是生产者/消费者范式,它可以通过一个带有“管理器”进程和多个“客户端”进程的系统来实现。客户端可以是生产者、消费者等。管理器跟踪客户端进程。每个进程由其成本标识,成本是一个范围在 1 到 10000 之间的严格正整数。具有相同成本的进程数量不能超过 10000。队列根据以下三种类型的请求进行管理:
- 将成本为 x 的进程添加到队列中;
- - 如果可能,根据当前管理器策略从队列中移除一个进程;
- - 强制管理器采用策略 i,其中 i 为 1 或 2。管理器的默认策略是 1。
- - 结束请求列表。
存在两种管理器策略:
- 策略 1 - 移除成本最小的进程;
- 策略 2 - 移除成本最大的进程。
只有当被移除进程的序号在移除列表中时,管理器才会打印被移除进程的成本。
你的任务是编写一个程序来模拟管理器进程。
输入
输入来自标准输入。输入中的每个数据集具有以下格式:
- 进程的最大成本;
- 移除列表的长度;
- 移除列表 - 将被显示的已移除进程的序号列表;例如1 4 表示将显示第一个和第四个被移除进程的成本;
- 每个请求单独占一行的请求列表。
每个数据集以 e 请求结束。数据集之间用空行分隔。
输出
程序在标准输出上打印每个被移除进程的成本,前提是移除请求的序号在列表中且此时队列不为空。如果队列为空,程序打印 -1。结果在单独的行上打印。不同数据集的结果之间用空行分隔。
如下是一个示例:
输入数据 1
5
2
1 3
a 2
a 3
r
a 4
p 2
r
a 5
r
e
输出数据 1
2
5
来源
2002 年东南欧竞赛