#P1823. Hotel
Hotel
描述
“信息学”酒店是Galaciuc最豪华的酒店之一。每年有很多游客来或离开这家酒店。因此,保持已占用房间的记录是非常困难的。但今年,酒店老板决定做一些改变。因此,他聘请你编写一个高效的程序,以响应他的所有需求。
编写一个程序,该程序应高效地响应以下3种类型的指令:
类型1:一组新游客的到来
一组个游客想要占用个连续的空房间。程序将接收到一个数字,表示该组游客想要占用的房间序列的起始房间编号,以及一个数字,表示游客的数量。可以保证此时房间、、...、都是空的。
类型2:一组游客的离开
游客以组为单位离开(不一定是他们最初来时的那组)。一个人组离开个已占用且连续的房间。程序将接收到一个数字,表示要释放的房间序列的起始房间编号,以及一个数字,表示离开组的成员数量。可以保证房间、、...、都是已占用的。
类型3:老板的查询
酒店老板可能会不时询问,最大连续空房的数量是多少。他需要这个数字来了解最多能容纳多少游客。你可以假设每个房间最多只能被一个游客占用。
输入
输入的第一行包含两个整数()和(),分别表示房间总数和指令的数量。
接下来的行包含一个数字,表示指令类型:
- 如果是1,则接下来会有两个数字和,表示游客组的起始房间编号和组成员的数量;
- 如果是2,则接下来会有两个数字和,表示要释放的房间序列的起始房间编号和组成员的数量;
- 如果是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