스마트 창고

시간 제한3초메모리 제한1024 MB

요약
모든 칸에 대해 그 칸을 포함하는 부분 직사각형 합의 최댓값을 구한다.
난이도

어려움10점 중 9점

유형
동적 계획법, 분할 정복, 누적 합
정답자
아직 제출이 없습니다

문제

모빌리티 혁신과 미래를 선도하는 기업, 현대오토에버에서는 4차 산업혁명 미래에 맞춰 스마트 물류 패러다임을 바꿔나가고 있다.

현대오토에버가 새로 개발해 테스트 중인 스마트 창고에는 N×MN \times M 크기의 격자 형태로 화물이 배치되어 있다. 격자의 위에서부터 rr번째 행, 왼쪽에서부터 cc번째 열의 칸을 (r,c)(r, c)와 같이 표기할 때, 칸 (r,c)(r, c)에는 가치가 A_rcA\_{rc}인 화물이 있다. 화물의 가치는 음수일 수도 있다.

창고의 로봇은 가끔 특정 화물을 창고 밖으로 운반하는 지시를 받는다. 이때 효율적인 운반을 위해, 로봇은 해당 화물뿐만 아니라 근처에 있는 다른 화물들을 직사각형 형태로 한번에 운반할 수 있다. 구체적으로, 칸 (r,c)(r, c)에 있는 화물을 운반하라는 지시를 받았을 경우, 로봇은 1≤r_1≤r≤r_2≤N1 \le r\_1 \le r \le r\_2 \le N, 1≤c_1≤c≤c_2≤M1 \le c\_1 \le c \le c\_2 \le M을 만족하는 네 정수 r_1r\_1, r_2r\_2, c_1c\_1, c_2c\_2를 고른 뒤, 직사각형 영역 \[r_1,r_2]×\[c_1,c_2]\[r\_1, r\_2] \times \[c\_1, c\_2] 안에 있는 모든 화물들을 운반한다.

NMNM개의 화물 각각에 대해, 로봇이 해당 화물을 운반하라는 지시를 받았을 때, 운반할 수 있는 화물의 가치 합의 최댓값을 구해 보자.

입력

첫째 줄에는 창고의 크기를 나타내는 두 정수 NN과 MM이 공백으로 구분되어 주어진다. (2≤N≤5002 \le N \le 500; 2≤M≤5002 \le M \le 500)

이후 NN개의 줄에 걸쳐, 그 중 rr번째 줄에는 격자의 rr번째 행에 있는 각 화물의 가치를 나타내는 MM개의 정수 A_r1A\_{r1}, A_r2A\_{r2}, ⋯\cdots, A_rMA\_{rM}이 공백으로 구분되어 주어진다. (−103≤A_rc≤103-10^3 \le A\_{rc} \le 10^3)

출력

NN개의 줄에 걸쳐, rr번째 줄에 칸 (r,1)(r, 1), (r,2)(r, 2), ⋯\cdots, (r,M)(r, M)에 대해 각각의 화물을 운반하라는 지시를 받았을 때 로봇이 운반할 수 있는 화물의 가치 합의 최댓값을 의미하는 MM개의 정수를 공백으로 구분해 출력한다.

예제2

  1. 예제 1

    입력
    3 4
    2 2 2 2
    2 -8 0 -12
    2 -8 7 5
    
    예상 출력
    8 8 9 8
    6 1 9 4
    6 6 12 12
    
  2. 예제 2

    입력
    2 2
    -1 -3
    2 -1
    
    예상 출력
    1 -3
    2 1