#1243. 3.内存管理
3.内存管理
当前没有测试数据。
3.内存管理
题目描述
计算机的内存被分割成个相同大小的内存块,这些内存块被依次编号为,,,,,,。申请或访问的内存块编号必须是整数。
当某申请或访问内存时,该会向系统发送一条消息:
- 表示在第秒向系统发送一条申请内存的消息;
- 表示在第秒向系统发送一条访问第块内存的消息。
程序开始时,所有内存块均处于空闲状态。
对于申请内存的消息,系统会将编号最小的空闲内存块中分配掉,该内存块转变为被占用状态。对于访问内存的消息,若当前内存块处于被占用状态,则系统会反馈一个,否则反馈一个。对于任何被占用的内存块,若在秒内无任何操作,则该内存块将重新变为空闲状态。
内存管理系统是十分复杂的,我们要求你编写一个程序,来模拟内存管理操作。
输入格式
输入文件包含若干行,每行描述一条消息,消息共有两种:
保证按照非递减顺序出现,对于在同一时刻发出的消息,按照输入顺序处理。
输出格式
对于每条申请内存的消息,输出系统分配掉的内存块编号。
对于每条访问内存的消息,输出或表示该内存块是否被占用。
数据范围与提示
- 对于的数据,消息数不大于;
- 对于的数据,消息数不大于,每次申请内存操作时,至少会有一个内存块处于空闲状态,,保证数据合法。
样例
1 +
1 +
1 +
2 . 2
2 . 3
3 . 30000
601 . 1
601 . 2
602 . 3
602 +
602 +
1202 . 2
1
2
3
+
+
-
-
+
-
1
3
-
说明
对于前条申请内存的消息,系统依次将、、号内存块分配掉,若在接下来秒内没有对这些内存块进行任何操作,这些内存块将在第秒时被系统释放掉;
对于接下来条访问内存的消息,号和号内存块在占用,返回,同时它们的释放时间被推迟到第秒。号内存块未被占用,于是返回;
再接下来条访问内存的消息,由于在第秒时号内存块被释放,在第秒时号和号内存块被释放,所以依次返回、和,同时号内存块的释放时间被推迟到第秒;
下面条申请内存的消息,由于目前号和号是空闲内存块,号在被占用,所以系统分别将号和号内存块分配掉,并且号和号内存块的释放时间为第秒。
最后一条访问内存的消息,由于号内存块已在第秒时被释放掉,因此返回。