아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

가희와 프로세스 1

면접 대비

시간 제한1초메모리 제한512 MB

요약
매초 우선순위가 가장 큰 프로세스(동률이면 id가 가장 작은 것)를 골라 실행하고, 나머지 프로세스의 우선순위를 1씩 올리며 선택된 프로세스의 남은 시간을 1 줄이는 스케줄러를 T초 동안 시뮬레이션해 매초 선택된 id를 출력한다.
난이도

보통10점 중 6점

유형
힙, 시뮬레이션, 그리디, 구현
정답자
아직 제출이 없습니다

문제

가희는 스케쥴러를 구현하라는 과제를 받았다. 스케쥴러가 실행시킬 프로세스를 선택하는 기준은 아래와 같다.

  • 우선 순위 값이 제일 큰 프로세스
  • 우선 순위 값이 제일 큰 프로세스가 여러 개라면, id가 가장 작은 프로세스

가희가 만든 스케쥴러는 다음 알고리즘으로 실행된다.

  1. 실행시킬 프로세스를 기준에 따라 선택한다. 선택된 프로세스의 id를 ids라 한다. id**s를 실행시킨다.
  2. 1초가 지난 후, 프로세스 id가 ids인 프로세스를 제외한 나머지 프로세스들의 우선 순위가 1 상승한다.
    프로세스 id가 ids 인 프로세스의 실행을 마치는 데 필요한 시간은 1 감소한다.
  3. 실행 시간이 남은 프로세스가 있다면 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 값은 모두 다릅니다.
  • 주어지는 값들은 모두 자연수입니다.

예제2

  1. 예제 1

    입력
    8 2
    1 5 1
    2 5 1
    
    예상 출력
    1
    2
    1
    2
    1
    2
    1
    2
    
  2. 예제 2

    입력
    10 2
    1 10 1000
    2 10 1
    
    예상 출력
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1