Problem
有個程式要記錄眾多的事件,使用者可以輸入指令註冊要監測的事件,指令要包含事件的ID(Q_num)跟週期(Period),格式如下:
1 | Register Q_num Period |
代表要註冊Q_num
事件,每Period
秒執行一次。而程式可以一次監測多個事件(用指令註冊),你要寫程式輸出前$k$個執行的事件。
(如果在同一秒有多個事件,則以Q_num
遞增排序)
$0 < Q_nnum \le 3000$
$0 < Period \le 3000$
Input
測資前半部分,每行一個指令(不超過1000行),以#
作為終止。
後半部分包含一個正整數$k \le 10000$
Output
輸出前$k$個執行的事件之Q_num
,每行一個。
Sample Input
1 | Register 2004 200 |
Sample Output
1 | 2004 |
想法
只要按照事件開始時間做排序,從最小開始拿就好,記得維護新的開始時間(事件會重複執行)。
每次都拿最小可以用priority_queue
AC Code
https://github.com/roy4801/solved_problems/blob/master/uva/1203.cpp
如果你覺得這篇文章很棒,請你不吝點讚 (゚∀゚)