플로우 숍

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

요약
N개의 제품이 M개의 공정을 동일한 순서로 통과하며, 각 공정에서 대기 중인 제품 중 번호가 가장 작은 것을 먼저 처리할 때 각 제품의 완료 시각을 구한다.
난이도

보통10점 중 7점

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

문제

한 공장에서 곡물을 수확할 때 쓰는 예취기를 주문 제작한다. 모든 예취기는 같은 순서의 공정을 거친다. 절단 바를 달고, 곡물 벨트를 끼우고, 릴을 장착하는 식이다. 부품은 주문자의 요구에 맞춰 달라지므로 같은 공정이라도 예취기마다 걸리는 시간이 다르다.

예취기 NN대를 주문받았고 제조 공정은 MM단계다. 모든 예취기는 1번 공정부터 MM번 공정까지 같은 순서로 지나간다.

ii번 예취기의 jj번 공정에는 시간 Pi,jP_{i,j}가 걸린다. 한 공정의 작업자는 한 번에 예취기 한 대만 다루고, 한번 시작한 작업은 끝날 때까지 멈추지 않는다. 시각 0에 주문 NN건이 모두 1번 공정 앞에 놓인다. jj번 공정의 작업자가 쉬고 있고 그 공정 앞에 기다리는 예취기가 있으면, 작업자는 그중 번호가 가장 작은 예취기를 집는다. 예취기에는 1번부터 NN번까지 번호가 붙어 있다. jj번 공정은 같은 예취기의 j−1j-1번 공정이 끝난 뒤에야 시작할 수 있다.

예취기마다 작업이 모두 끝나는 시각을 구하라.

입력

첫째 줄에 예취기의 수 NN과 공정의 수 MM이 주어진다 (1≤N,M≤10001 \le N, M \le 1000). 다음 NN개 줄에는 각각 정수 MM개가 주어진다. ii번째 줄의 jj번째 정수가 Pi,jP_{i,j}다 (1≤Pi,j≤1061 \le P_{i,j} \le 10^6).

출력

한 줄에 정수 NN개 T1 T2 … TNT_1\ T_2\ \dots\ T_N을 공백 하나로 구분해 출력한다. TiT_i는 ii번 예취기의 MM번 공정이 끝나는 시각이다.

예제2

  1. 예제 1

    입력
    2 3
    1 2 3
    3 2 1
    
    예상 출력
    6 7
    
  2. 예제 2

    입력
    3 2
    3 1
    4 7
    2 5
    
    예상 출력
    4 14 19