编程题
### 问题描述 Windows 操作系统为每个进程维护一个消息队列,如果进程执行某种操作,例如单击鼠标等,系统向队列添加一个相应的消息。同时如果队列非空,则进程执行消息循环:根据消息的优先级取出一个消息,并执行相应的操作。注意,优先级数值小表示优先级高。在本题中,要求你模拟消息队列,向消息队列中添加消息和取出消息。 ### 输入格式 输入数据占若干行,每行为一个命令:$GET$ 或者 $PUT$,分别表示取出优先级最高的消息和添加消息。如果是 $PUT$ 命令,则命令后面紧跟一个字符串,代表消息名称(最多 $10$ 个字符),然后是 $2$ 个整数,分别代表消息的参数和优先级(优先级为小于 $20$ 的正整数)。至多有 $60000$ 个命令。 注意,每个消息可能会出现 $2$ 次甚至更多次,测试数据保证任一时刻队列中各消息的优先级不一样(因此同一个消息虽然会出现多次,但任一时刻不会出现 $2$ 条相同的消息,即任一时刻队列中的消息是不一样的)。 ### 输出格式 对每个 $GET$ 命令,输出从消息队列中取出的消息的名称和参数,如果消息队列为空,则输出 EMPTY QUEUE!,对 $PUT$ 命令,没有输出内容。 ### 样例输入 ```txt GET PUT msg1 10 5 PUT msg2 10 4 GET GET GET ``` ### 样例输出 ```txt EMPTY QUEUE! msg2 10 msg1 10 EMPTY QUEUE! ``` ### 说明 多组输入在 C++ 中可以使用 `while(cin);` 来处理。
查看答案
赣ICP备20007335号-2