#SFJSJJZN3124. 「Hotel」 旅馆

    ID: 936 传统题 1000ms 128MiB 尝试: 8 已通过: 1 难度: 7 上传者: 标签>高级算法线段树来源算法竞赛进阶指南数据结构延迟标记3

「Hotel」 旅馆

题目描述

一家旅馆共有 NN 个房间,这 NN 个房间是连成一排的,标号为 1N1\sim N

现在有很多旅客以组为单位前来入住,每组旅客的数量可以用 DiD_i 来表示。

旅店的业务分为两种,入住和退房:

1、旅客入住时,第 i 组旅客需要根据他们的人数 DiD_i,给他们安排 DiD_i 个连续的房间,并且房间号要尽可能的小。如果房间不够,则无法安排。

2、旅客退房时,第i组旅客的账单将包含两个参数 XiX_iDiD_i,你需要将房间号 XiX_iXi+Di1 X_i+D_i-1 之间的房间全部清空。

现在你需要帮助该旅馆处理 M 单业务。

旅馆最初是空的。

输入数据

第一行输入两个用空格隔开的整数 N 和 M。

接下来 M 行将描述 M 单业务:

“1 DiD_i”表示这单业务为入住业务。

“2 XiX_i DiD_i”表示这单业务为退房业务。

输出数据

每个入住业务输出一个整数,表示要安排的房间序列中的第一个房间的号码。

如果没办法安排,则输出 00

每个输出占一行。

数据范围

1DiN50,0001 \le D_i \le N \le 50,000, 1M<50,0001 \le M < 50,000

输入样例:

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

输出样例:

1
4
7
0
5

来源

  • 《算法竞赛进阶指南》
  • acwing 可能含有视频讲解