P1019

[Usaco2008 Feb]Hotel 旅馆

[Usaco2008 Feb]Hotel 旅馆

奶牛们计划前往苏必利尔湖畔旅游,享受当地的湖光山色。作为旅行的策划者和负责人,贝茜选择了一家湖边的著名旅馆。

旅馆共有 NN 间客房,它们位于同一层,并按编号顺次排列。贝茜一行和其他游客会分批来到旅馆,希望预订 DiD_i 间连续的客房。

对于每个订房请求,如果存在一个编号 rr,使得编号为 r,r+1,…,r+Di−1r,r+1,\ldots,r+D_i-1 的客房均为空闲状态,则服务员会将这些客房分配给该批游客。如果有多个满足条件的 rr,服务员会选择其中最小的一个;如果不存在满足条件的 rr,则该请求无法满足。

旅馆也会批量处理退房请求。每个退房请求由 XiX_i 和 DiD_i 描述,表示编号为 Xi,Xi+1,…,Xi+Di−1X_i,X_i+1,\ldots,X_i+D_i-1 的客房全部变为空闲状态。在退房前,这些客房中的一部分甚至全部都可能原本无人入住。

你需要编写程序,按照输入顺序处理 MM 个订房或退房请求。在第一个请求到来之前,旅馆中的所有客房均为空闲状态。

输入格式

第一行包含两个以空格分隔的整数 NN 和 MM,分别表示客房数量和请求数量。

接下来 MM 行,第 ii 行描述第 ii 个请求:

  • 若该请求为订房请求,则输入两个以空格分隔的整数 11 和 DiD_i;
  • 若该请求为退房请求,则输入三个以空格分隔的整数 22、XiX_i 和 DiD_i。

输出格式

对于每个订房请求,输出一行一个整数:

  • 如果请求能够满足,输出满足条件的最小房间编号 rr;
  • 如果请求无法满足,输出 00。

退房请求不产生输出。

样例输入

10 6
1 3
1 3
1 3
1 3
2 5 5
1 6

样例输出

1
4
7
0
5

数据范围

  • 1≤N≤5×1041\le N\le 5\times 10^4;
  • 1≤M≤5×1041\le M\le 5\times 10^4;
  • 1≤Di≤N1\le D_i\le N;
  • 对于退房请求,1≤Xi≤N−Di+11\le X_i\le N-D_i+1。

来源与许可

本题为 USACO 2008 February 试题「Hotel 旅馆」,题面与测试数据整理自 BZOJ。

样例 1

输入

10 6
1 3
1 3
1 3
1 3
2 5 5
1 6

输出

1
4
7
0
5