2020年團體程式設計天梯賽-總決賽 L2-2 口罩發放

weifeng2356發表於2020-11-29

L2-2 口罩發放 (25分)

為了抗擊來勢洶洶的 COVID19 新型冠狀病毒,全國各地均啟動了各項措施控制疫情發展,其中一個重要的環節是口罩的發放。

某市出於給市民發放口罩的需要,推出了一款小程式讓市民填寫資訊,方便工作的開展。小程式收集了各種資訊,包括市民的姓名、身份證、身體情況、提交時間等,但因為資料量太大,需要根據一定規則進行篩選和處理,請你編寫程式,按照給定規則輸出口罩的寄送名單。

輸入格式:

輸入第一行是兩個正整數 D 和 P(1≤D,P≤30),表示有 D 天的資料,市民兩次獲得口罩的時間至少需要間隔 P 天。

接下來 D 塊資料,每塊給出一天的申請資訊。第 i 塊資料(i=1,⋯,D)的第一行是兩個整數 T​i​​ 和 S​i​​ (1≤T​i​​ ,S​i​​ ≤1000),表示在第 i 天有 T​i​​ 條申請,總共有 S​i​​ 個口罩發放名額。隨後 T​i​​ 行,每行給出一條申請資訊,格式如下:

姓名 身份證號 身體情況 提交時間

給定資料約束如下:

姓名 是一個長度不超過 10 的不包含空格的非空字串;
身份證號 是一個長度不超過 20 的非空字串;
身體情況 是 0 或者 1,0 表示自覺良好,1 表示有相關症狀;
提交時間 是 hh:mm,為24小時時間(由 00:00 到 23:59。例如 09:08。)。注意,給定的記錄的提交時間不一定有序;
身份證號 各不相同,同一個身份證號被認為是同一個人,資料保證同一個身份證號姓名是相同的。

能發放口罩的記錄要求如下:

身份證號 必須是 18 位的數字(可以包含前導0);
同一個身份證號若在第 i 天申請成功,則接下來的 P 天不能再次申請。也就是說,若第 i 天申請成功,則等到第 i+P+1 天才能再次申請;
在上面兩條都符合的情況下,按照提交時間的先後順序發放,直至全部記錄處理完畢或 S​i​​ 個名額用完。如果提交時間相同,則按照在列表中出現的先後順序決定。

輸出格式:

對於每一天的申請記錄,每行輸出一位得到口罩的人的姓名及身份證號,用一個空格隔開。順序按照發放順序確定。

在輸出完發放記錄後,你還需要輸出有合法記錄的、身體狀況為 1 的申請人的姓名及身份證號,用空格隔開。順序按照申請記錄中出現的順序確定,同一個人只需要輸出一次。

輸入樣例:

4 2
5 3
A 123456789012345670 1 13:58
B 123456789012345671 0 13:58
C 12345678901234567 0 13:22
D 123456789012345672 0 03:24
C 123456789012345673 0 13:59
4 3
A 123456789012345670 1 13:58
E 123456789012345674 0 13:59
C 123456789012345673 0 13:59
F F 0 14:00
1 3
E 123456789012345674 1 13:58
1 1
A 123456789012345670 0 14:11

輸出樣例:

D 123456789012345672
A 123456789012345670
B 123456789012345671
E 123456789012345674
C 123456789012345673
A 123456789012345670
A 123456789012345670
E 123456789012345674

樣例解釋:

輸出中,第一行到第三行是第一天的部分;第四、五行是第二天的部分;第三天沒有符合要求的市民;第六行是第四天的部分。最後兩行按照出現順序輸出了可能存在身體不適的人員。

作者 DAI, Longao
單位 杭州百騰教育科技有限公司
程式碼長度限制 16 KB
時間限制 400 ms
記憶體限制 64 MB

題解

暫無

相關文章