#B4408. [语言月赛 202509] 挂号系统
[语言月赛 202509] 挂号系统
题目描述
自从小 S 频繁独自出入医院解决牙齿问题,他对医院的挂号系统也逐渐熟悉。
这里你只需要模拟一天的挂号系统。
本题中的时刻均为 小时制,用 表示。题中的姓名为长度不少于 、不超过 且仅由小写字母组成的字符串。
病人来到医院前,需要提前挂号,挂号时会预约治疗时间和医生。病人最早可以在治疗时间前 小时(含)进行签到,但若签到时间晚于治疗时间,会被记作迟到。签到成功后,该病人将被加入对应医生的治疗队列。同时,病人的预约会被删除。如果病人签到成功后再次签到,则视为签到失败。
每名医生有一个治疗队列。当一名医生叫号时,队列首的病人将前往治疗,同时该病人从队列中被移除。叫号时,屏幕上会显示病人的名字。
每名医生的队列将按如下规则排序:
- 对于未迟到的病人,按照治疗时间排序;若治疗时间相同,按照挂号时间排序。
- 对于迟到的病人,按照签到时间排序。
- 未迟到的病人总是在迟到的病人前。
在一天中,有 个事件,保证所有事件按照时间顺序发生,同一时刻不会发生多个事件。每个事件形如:
-
挂号:
<Now> appointment <Name> <Doctor> <Time>
其中
<Now>
表示该事件的发生时刻,<Name>
表示病人的名字,<Doctor>
表示医生的名字,<Time>
表示治疗时间。保证挂号事件一定合法,一个病人只会预约一次。 -
签到:
<Now> register <Name>
其中
<Now>
表示该事件的发生时刻,<Name>
表示病人的名字。若该病人预约过,且此时已经在治疗时间前 小时(含)之后,认为预约成功。你需要输出
Success
并将病人加入医生的治疗队列。同时,你需要将该病人的预约信息删除。否则,输出
Fail
。此时病人的预约信息不会被删除。如果病人签到成功后再次签到,则视为签到失败,输出
Fail
。 -
叫号:
<Now> query <Doctor>
其中
<Now>
表示该事件的发生时刻,<Doctor>
表示医生的名字。若该医生的治疗队列非空,按照上述规则输出队列首病人加密后的名字。加密方式为,除了第一个字符和最后一个字符,均替换为
*
。如chenzhe
变为c*****e
。否则输出
No patient
。
输入格式
第一行一个正整数 ,表示一天中发生的事件数。
接下来 行,按照时间顺序,一行给出一个事件。
输出格式
输出若干行,按照题意输出。
6
08 30 appointment littles docs 14 30
08 31 register littles
10 00 query chenrn
10 03 query docs
13 50 register littles
14 20 query docs
Fail
No patient
No patient
Success
l*****s
5
00 32 appointment ghefau eker 10 19
03 28 appointment scccc eker 10 30
10 20 register scccc
10 21 register ghefau
10 25 query eker
Success
Success
s***c
14
07 56 appointment gjyed hnbx 10 34
08 03 query hnbx
08 06 appointment nbrp hnbx 10 48
08 44 query hnbx
09 29 register nbrp
09 58 query hnbx
10 31 register gjyed
15 09 appointment eiux ygssgy 15 34
15 13 query hnbx
15 15 register eiux
17 08 query hnbx
18 54 appointment nrg hnbx 19 18
19 28 query hnbx
19 57 register nrg
No patient
No patient
Fail
No patient
Success
g***d
Success
No patient
No patient
Success
提示
样例 1 解释
- littles 在 预约了 docs 医生。预约的治疗时间为 。
- littles 在 尝试签到,但是由于此时距离治疗时间过早,签到失败。
- chenrn 医生叫号,但是没有已签到的病人。
- docs 医生叫号,但是没有已签到的病人。
- littles 在 尝试签到,此时已经在治疗时间前一小时之后,签到成功。
- docs 医生叫号,littles 前往治疗。
数据规模与规定
对于 的数据,。
测试点编号 | 特殊性质 |
---|---|
没有病人迟到 | |
没有病人不迟到 | |
签到总是成功 | |
所有预约的医生相同 | |
无 |
输入的时间中可能出现 时刻,即,。