T634819 [语言月赛 202507] 讨论间预约
题目描述
N 大学图书馆中的讨论间采用预约制,你需要实现一个预约系统。
预约规则如下:
- 每人每次只能预约 $1$ 间讨论间,每次预约时长不得超过 $2$ 小时。
- 任何一间讨论间同时只能被 $1$ 人预约。
- 任何人的预约时间段不能和自己的其它有效预约的时间段重合。
若某次预约的预约时长超过 $2$ 小时,或和预约人自己已有的、未被取消的预约重合,则预约人将被记录一次违规。
- 若某人被记录 $2$ 次违规,则取消该人之前的所有预约。
- 若某人被记录 $3$ 次违规,则取消该人之前的所有预约,且该人之后的预约都将被拒绝。
预约按如下格式给出:
```
reserve
```
- `` 是一个整数,保证其在 $[100,999]$ 之间,表示预约者的学号。
- `` 是一个整数,保证其在 $[100,999]$ 之间,表示预约的讨论间编号。
- `` 是一个字符串,以 `HH:MM` 给出,表示开始时间为 `HH` 时 `MM` 分,位数不够时前补零。保证这是一个合法时间。
- `` 是一个整数,保证其在 $[1,999]$ 之间,表示预约的使用时长,以分钟计。
在收到预约后,你需要判断预约是否符合上述条件,如果不符合条件,则输出 `FAIL`,否则输出 `SUCCESS `,其中 `` 表示预约编号,该值等于在本次预约之前的曾经成功过的预约数(成功后取消的也计入)。
取消预约按如下格式给出:
```
cancel
```
- 其中 `` 表示预约编号。意为取消预约编号为 `` 的预约。
在收到取消预约请求后,如果该预约已经被取消过,则输出 `FAIL`,否则输出 `SUCCESS`。
输入格式
第一行输入一个整数 $n$ 表示操作个数。
接下来 $n$ 行,每行输入一个操作,操作的输入格式如题目描述中所述。
输出格式
对于每个操作,输出一行表示结果。结果的输出格式如题目描述中所述。
说明/提示
### 样例 1 解释
- 第 $2$ 次操作中,学生 $201$ 的预约和自己在第 $1$ 次预约的时段重合,因此预约失败,并记录一次违规。
- 第 $3$ 次操作中,由于学生 $201$ 已经预定在 $07:00\sim 09:00$ 使用讨论间 $101$,存在时间重合,因此预约失败。由于学生 $202$ 不是和自己的预约冲突,因此不会被记录违规。
- 第 $5$ 次操作中,由于学生 $202$ 已经预定在 $09:00\sim 11:00$ 使用讨论间 $102$,存在时间重合,因此预约失败。本次操作同样不会被记录违规。
- 第 $7$ 次操作中,由于预约 $2$(第 $6$ 次操作)已被撤销,因此可以顺利预约。请注意虽然本次预约的开始时间($09:00$)和预约 $1$(第 $1$ 次操作)的结束时间在同一时刻,但不认为这两次预约之间存在重合。
### 样例 2 解释
由于学生 $201$ 在第 $1,3$ 两次操作中违规,因此第 $2$ 次操作中成功的预约被自动撤销。
### 数据范围与约定
对于全部数据,满足 $1\le n\le 10^5$。各测试点的详细数据范围见下表。
| 测试点 | $n$ | 特殊性质 |
| :---: | :---: | :---: |
| $1\sim 3$ | $\le 500$ | AC |
| $4\sim 5$ | $\le 500$ | 无 |
| $6\sim 8$ | $\le 2000$ | A |
| $9\sim 11$ | $\le 2000$ | B |
| $12\sim 13$ | $\le 2000$ | C |
| $14\sim 17$ | $\le 2000$ | 无 |
| $18\sim 19$ | $\le 10^5$ | C |
| $20\sim 25$ | $\le 10^5$ | 无 |
特殊性质 A:每个人最多进行 2 次预约。
特殊性质 B:每个人最多进行 3 次预约。
特殊性质 C:没有取消操作。