假设当前有一块连续的内存,分成 n 个单位,编号 1 ~ n 。当有一个大小为 m 的文件需要储存时,会占用一块连续的 m 个单位的空间,但是并不是随机储存,而是从编号1的位置开始往后依次查找,如果当前位置能放下这个大小为 m 的文件,则会储存。比如储存这个大小为 m 的文件,假设当前没有其他文件储存,则从编号 1 开始储存,储存区间为 [ 1,m ],如果还需要再储存一个大小为 m 的文件,则需要储存在 [ m + 1,m * 2 ] 上。同时,如果文件被删除,则文件原本占的储存空间会被释放。现在在一天中,蝈蝈有多次文件放置操作和删除操作,蝈蝈想知道他的每一次放置和删除操作是否都是有效的。
第一行两个整数 n 和 m,分别表示空间的大小和操作的次数(1 ≤ n,m ≤ 100000)
接下来 m 行,每行表示一次操作,操作的顺序就是输入的顺序,是有先后关系的,每行输入只会是以下两种格式中的一个:
① 1 id k ,表示有一个编号为 id 的且大小为 k 的文件需要储存(1 ≤ id ≤ m,且所有 id 各不相同,1 ≤ k ≤ n) ,如果当前内存能够储存,则储存,反之则丢弃
② 2 id ,表示需要删除编号为 id 的文件(1 ≤ id ≤ m)
输出 m 行,每次表示对每次操作的输出:
对于操作①,如果当前可以放置,则输出放置区间的左端点,反之不能放置,则输出“Memory Limit Exceeded”
对于操作②,如果当前文件存在,则输出“Successfully Deleted”,反之文件不存在,则输出“Error”
3 7 1 1 1 1 2 1 2 1 1 3 2 2 3 2 2 1 4 2
1 2 Successfully Deleted Memory Limit Exceeded Error Successfully Deleted 1