#P1823. Hotel

Hotel

描述

“信息学”酒店是Galaciuc最豪华的酒店之一。每年有很多游客来或离开这家酒店。因此,保持已占用房间的记录是非常困难的。但今年,酒店老板决定做一些改变。因此,他聘请你编写一个高效的程序,以响应他的所有需求。

编写一个程序,该程序应高效地响应以下3种类型的指令:

类型1:一组新游客的到来

一组MM个游客想要占用MM个连续的空房间。程序将接收到一个数字ii,表示该组游客想要占用的房间序列的起始房间编号,以及一个数字MM,表示游客的数量。可以保证此时房间iii+1i+1、...、i+M1i+M-1都是空的。

类型2:一组游客的离开

游客以组为单位离开(不一定是他们最初来时的那组)。一个MM人组离开MM个已占用且连续的房间。程序将接收到一个数字ii,表示要释放的房间序列的起始房间编号,以及一个数字MM,表示离开组的成员数量。可以保证房间iii+1i+1、...、i+M1i+M-1都是已占用的。

类型3:老板的查询

酒店老板可能会不时询问,最大连续空房的数量是多少。他需要这个数字来了解最多能容纳多少游客。你可以假设每个房间最多只能被一个游客占用。

输入

输入的第一行包含两个整数NN3N16,0003 \leq N \leq 16,000)和PP3P200,0003 \leq P \leq 200,000),分别表示房间总数和指令的数量。

接下来的PP行包含一个数字cc,表示指令类型:

  • 如果cc是1,则接下来会有两个数字iiMM,表示游客组的起始房间编号和组成员的数量;
  • 如果cc是2,则接下来会有两个数字iiMM,表示要释放的房间序列的起始房间编号和组成员的数量;
  • 如果cc是3,则该行没有数字,程序需要输出当前最大连续空房间的长度。

输出

对于每个类型为3的指令,输出一行,表示当前最大连续空房间的长度。

在第一次指令前,所有房间都是空的。

输入数据1

12 10
3
1 2 3
1 9 4
3
2 2 1
3
2 9 2
3
2 3 2
3

输出数据1

12
4
4
6
10

提示

解释:

  • 在第一次查询时,所有房间都为空,最大连续空房间数为12;
  • 然后,游客组占用房间[2, 3, 4],剩下的最大连续空房间数为4;
  • 接着,游客组占用房间[9, 10, 11, 12],最大连续空房间数仍然是4;
  • 依此类推,程序会输出每次查询时的最大连续空房间数。

来源
Romania OI 2002