内存分配
背景
对于一个操作系统,内存分配是基础的功能之一。一般情况下,操作系统将可用的内存分类,所以才能够快速分配内存。
描述
给定内存大小(1~n),一开始内存全部可用,子进程按时间顺序向操作系统发送消息(software interrupt)。
消息包括:
Q len
寻求一段len长度的连续 内存寻求后该内存空间被占用
系统输出连续内存的起始位置,如有多段,输出地址最小的一个
如果内存不足输出 -1
F l r
释放区间为[l,r]的内存
系统输出当前可用的内存
考虑到流氓软件,len可能小于等于0,l可能大于r,这时输出 "Ivalid Request" (英语不好,单独一行,不带引号)
格式
输入
第一行一个整数n,代表内存总长度
以下若干行,每行一个信息
输出
对于每一个指令,输出结果
样例
输入
1000
Q 123
Q 345
Q 234
F 233 445
F 1 999
Q 200
F 100 101
Q 10
输出
1
124
469
511
1000
1
802
201
限制
1s, 65536KiB
n<=5e5
操作不超过30000个
注意
如果内存已经是空闲的,释放内存操作无效。
部分空闲则忽略空闲的那一部分,仍然需要将其他部分释放。
来源
KEKE