데이터 스트림은 실시간으로 끊임없이 이어지는, 순서가 있는 항목들의 나열이다. 센서 데이터, 인터넷 트래픽, 금융 시세, 온라인 경매, 그리고 웹 사용 로그나 통화 기록 같은 거래 로그가 그 예이다. 스트림에 대한 질의(query) 역시 일정 기간 동안 계속 실행되면서, 새로운 데이터가 도착할 때마다 새로운 결과를 점진적으로 반환한다. 예를 들어 공장 창고의 온도 감시 시스템은 다음과 같은 질의를 실행할 수 있다.
Argus는 이러한 질의를 데이터 스트림 위에서 처리하는 데이터 스트림 관리 시스템(Data Stream Management System)이다. 사용자는 Argus에 질의를 등록하고, Argus는 변하는 데이터 위에서 질의를 계속 실행하며 사용자가 원하는 주기로 결과를 돌려준다.
질의는 다음 명령으로 등록한다.
Register Q_num Period
Q_num (0 < Q_num <= 3000)은 질의의 ID 번호이고, Period (0 < Period <= 3000)는 결과를 두 번 반환하는 사이의 간격(초)이다. 등록 후 Period초가 지나면 결과가 처음 반환되고, 그 뒤로는 Period초마다 결과가 반환된다.
여러 개의 질의가 같은 순간에 Argus에 한꺼번에 등록된다. 모든 질의의 Q_num은 서로 다르다. 결과를 반환하는 처음 K개의 질의를 순서대로 알려주는 것이 과제이다. 두 개 이상의 질의가 같은 시각에 결과를 반환한다면, Q_num이 작은 것부터 차례로 하나씩 반환한다.
입력의 첫 부분은 Argus에 주어지는 등록 명령들이며, 한 줄에 하나씩 주어진다. 명령의 개수는 1000개를 넘지 않으며, 모든 명령은 같은 시각(0초)에 실행된다. 이 부분은 # 한 글자만 있는 줄로 끝난다.
두 번째 부분은 한 줄로, 양의 정수 K (K <= 10000) 하나가 주어진다.
결과를 반환하는 처음 K개의 질의의 Q_num을 한 줄에 하나씩 출력한다.