#P1281. MANAGER

MANAGER

描述

并行处理中的一种编程范式是生产者/消费者范式,它可以通过一个带有“管理器”进程和多个“客户端”进程的系统来实现。客户端可以是生产者、消费者等。管理器跟踪客户端进程。每个进程由其成本标识,成本是一个范围在 1 到 10000 之间的严格正整数。具有相同成本的进程数量不能超过 10000。队列根据以下三种类型的请求进行管理:

axa x - 将成本为 x 的进程添加到队列中;

  • rr - 如果可能,根据当前管理器策略从队列中移除一个进程;
  • pip i - 强制管理器采用策略 i,其中 i 为 1 或 2。管理器的默认策略是 1。
  • e e - 结束请求列表。

存在两种管理器策略:

  • 策略 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 年东南欧竞赛