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