가희와 프로세스 1
면접 대비시간 제한1초메모리 제한512 MB
매초 우선순위가 가장 큰 프로세스(동률이면 id가 가장 작은 것)를 골라 실행하고, 나머지 프로세스의 우선순위를 1씩 올리며 선택된 프로세스의 남은 시간을 1 줄이는 스케줄러를 T초 동안 시뮬레이션해 매초 선택된 id를 출력한다.
문제
가희는 스케쥴러를 구현하라는 과제를 받았다. 스케쥴러가 실행시킬 프로세스를 선택하는 기준은 아래와 같다.
- 우선 순위 값이 제일 큰 프로세스
- 우선 순위 값이 제일 큰 프로세스가 여러 개라면, id가 가장 작은 프로세스
가희가 만든 스케쥴러는 다음 알고리즘으로 실행된다.
- 실행시킬 프로세스를 기준에 따라 선택한다. 선택된 프로세스의 id를 ids라 한다. id**s를 실행시킨다.
- 1초가 지난 후, 프로세스 id가 ids인 프로세스를 제외한 나머지 프로세스들의 우선 순위가 1 상승한다.
프로세스 id가 ids 인 프로세스의 실행을 마치는 데 필요한 시간은 1 감소한다. - 실행 시간이 남은 프로세스가 있다면 1로 돌아가고, 그렇지 않으면 종료한다.
동시에 실행되는 프로세스는 1개이고, 1초일 때 가희가 만든 스케쥴러는 최초로 선택한 프로세스를 실행시키는 작업을 한다.
가희는 1초일 때 부터 T초일 때 까지, 스케쥴러가 선택한 프로세스의 id를 알고 싶다. 가희를 도와주세요.
입력
첫 번째 줄에 T, n이 주어진다.
두 번째 줄 부터 n+1번째 줄까지 다음과 같은 형식으로 주어진다.
Ai Bi Ci
이것은 i번째 process의 id가 Ai이고, 프로세스 id가 실행을 마치는 데 필요한 시간이 Bi초이고, 초기 우선 순위가 Ci임을 의미한다.
출력
T개의 정수를 T개의 줄에 출력한다.
i번째 줄에는 가희가 만든 스케쥴러가 i초가 되었을 때 선택한 프로세스의 id를 출력해 주세요.
제한
- 1 ≤ n ≤ 105
- 1 ≤ T ≤ min(프로세스들의 실행 시간 총 합, 106)
- 1 ≤ Ai, Bi, Ci ≤ 106
- 문제에 주어지는 프로세스의 id 값은 모두 다릅니다.
- 주어지는 값들은 모두 자연수입니다.