Uva 1203 - Argus

題目

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
2
3
4
Register 2004 200
Register 2005 300
#
5

Sample Output

1
2
3
4
5
2004
2005
2004
2004
2005

想法

只要按照事件開始時間做排序,從最小開始拿就好,記得維護新的開始時間(事件會重複執行)。
每次都拿最小可以用priority_queue

AC Code

https://github.com/roy4801/solved_problems/blob/master/uva/1203.cpp

推薦文章