bzoj#P2203. Pku2448 A New Operating System

Pku2448 A New Operating System

题目描述

最近阳阳接下了一个任务:编写一个操作系统。 编写操作系统可是一个大工程,阳阳花费了很多时间在上面,他本想很快完成的,但是IOI在即,再怎么样也不能耽误了世界赛啊!但是雇主的要求有很严格,要求阳阳一定要在IOI之前完成这个系统的编写,所以他不得不找到你请求帮助,人多力量大嘛,你就帮帮他咯。   你的任务很简单,只要编写一个内存管理系统就可以了。你的程序需要支持以下9个操作: CreateProcess(PID,Memory,Priority):新建一个过程,编号为PID,其占用的内存为Memory,优先级(称为外部优先级)为Priority;   AddMessage(PID,Priority):在过程PID中新建一个任务,其优先级(称为内部优先级)为Priority;   Run:在当前所有任务中间找出一个优先级最高的运行并输出’Run: Priority’,这里的优先级定义为其内部优先级与外部优先级的积,如果两个任务的优先级一样则优先运行PID较小的任务,如果没有任何任务则输出’Empty’;   ChangePriority(PID,NewValue):将过程PID的外部优先级改变为NewValue;   GetMemory(PID,Memory):将过程PID的内存占用增加Memory;   FreeMemory(PID,Memory):将过程PID的内存占用减少Memory;   RunProcess(PID):将过程PID中找出一个内部优先级最高的运行并输出’Run Process: Priority’,如果该过程中如果没有任何任务则输出’Empty’;   CloseMaxMemory:将当前所有过程中内存占用最高的过程关闭,占用内存一样则选择PID较小的关闭,如果当前没有任何过程则输出’Empty’;   CloseProcess(PID):将过程PID关闭。   PS: 1)   任务运行后自动被删除; 2)   对于CreateProcess,如果PID已经存在则输出’Error’,对于其他操作,如果PID不存在则输出’Error’,这种情况下该操作将被忽略; 3)   当一个过程的内存占用小于等于0时则该过程将被自动关闭;

输入格式

第一行一个正整数N,表示操作总数,开始内存中过程为空; 然后N行每行按照如上格式描述一个任务;

输出格式

按照如上描述输出。

CloseMaxMemory
CreateProcess(1,100,1)
CreateProcess(2,200,1)
CreateProcess(3,300,1)
AddMessage(1,9)
AddMessage(2,19)
AddMessage(1,10)
GetMemory(2,999)
CloseMaxMemory
Run
RunProcess(1)

Run: 10
Run Process: 9

提示

0 < N <= 100,000 对于 65% 的数据范围 N <= 1,000 ; 对于 90% 的数据范围将只出现 CreateProcessAddMessageRunRunProcess 操作; 对于 90% 的数据 PID 的范围为 [1 .. N]

题目来源

模拟题系列