#P1116. 内存管理

内存管理

问题描述

在公元 2018 年 4 月 21 日的凌晨,张老师做了一个神奇的梦!在梦里,张老师变成了比赛评测机的内存管理员。在评测机里面一共有 NN 块够任何程序使用的内存块,内存块的编号从 00 开始,一直到 N1N-1。尽管这是在张老师的梦里,但是张老师竟然被人压迫了!张老师收到了辛格尔神的命令,要求当有程序申请内存时,张老师必须每次从可用的内存块里找出编号最小的给程序使用。好心的辛格尔神的女儿事先告诉了张老师一共有多少个程序将会申请内存。但是在梦里的张老师依旧是没有空的,所以想让你帮他写个程序搞定这件事情。

输入格式

题目包含多组数据。

第一行一个整数 TT,表示有 TT 组测试数据。(1T21 \leq T \leq 2

对于每组数据分为 M+2M+2 行:

第一行有一个整数 NN,表示张老师一共管理 NN 块内存。(N100000N \leq 100000

第二行有一个整数 MM,表示一共将会有 MM 个申请内存的请求。(M100000M \leq 100000

接下来 MM 行,每行两个整数 starti\text{start}_itimei\text{time}_i,表示在 starti\text{start}_i 有一个使用时间为 timei\text{time}_i 的请求。

对于 0<i<N0 < i < N,保证 startistarti+1\text{start}_i \leq \text{start}_{i+1},并且 starti+1starti2000\text{start}_{i+1} - \text{start}_i \leq 2000

对于 0<iN0 < i \leq N,保证 0<timei1080 < \text{time}_i \leq 10^8

输出格式

对于每组数据,第一行输出 Case #x:xx 编号从 1 开始)。

对于每组数据,一共输出 MM 行,表示 MM 个请求时,张老师所给分配的内存编号,如果某次请求时,没有空闲内存,则该次请求输出 no space left

样例输入

2
5
5
1 2
1 1
3 3
4 1
6 2
10
10
2 4
6 3
8 5
11 2
13 1
13 2
15 1
15 4
19 2
21 5

样例输出

Case #1:
0
1
0
1
0
Case #2:
0
0
1
0
0
1
0
1
0
0