첨단 가지 농장

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

요약
주어진 값의 크기 순서를 인접한 칸 사이에서 유지하도록 음이 아닌 정수 높이를 배정하되, 높이의 합이 최소가 되게 하는 행렬을 구한다.
난이도

보통10점 중 7점

유형
정렬, 그래프, BFS, 구현
정답자
아직 제출이 없습니다

문제

밍구는 최첨단 가지 농장의 주인입니다. 가지 농장에는 NN개의 행과 MM개의 열로 이루어진 격자 위 N×MN \times M칸의 토양에 가지가 심겨 있습니다. 밍구는 최근 물을 많이 받은 가지들이 더 빨리 자란다는 사실을 깨달았습니다. 밍구는 가지들의 크기를 균일하게 만들기 위해 크기가 작은 가지들에 더 많은 물을 주려고 합니다.

이를 위해 가지 농장에서는 토양의 높이를 임의의 음이 아닌 정수로 변경할 수 있습니다. 물은 높이가 높은 곳에서 낮은 곳으로 흐르게 되어 인접한 두 칸의 토양 중 높이가 높은 토양보다 높이가 낮은 토양에 더 많은 양의 물이 모이게 됩니다. 인접한 두 토양의 높이가 같으면 같은 양의 물이 모이게 됩니다. 단, 두 칸의 토양이 한 변을 공유할 때 서로 인접하였다고 합니다.

가지의 크기를 균일하게 만들기 위해서는 모든 인접한 두 칸의 토양 중 큰 가지가 있는 토양의 높이가 작은 가지가 있는 토양보다 높아야 합니다. 인접한 두 칸의 토양에 있는 가지의 크기가 같다면 두 토양의 높이가 같아야 합니다.

현재 모든 토양의 높이는 00입니다. 토양 한 칸의 높이를 hh로 변경하려면 hh만큼의 일을 해야 합니다. 이때, hh는 음이 아닌 정수입니다. 가지의 크기를 균일하게 만드는 토양의 높이 배치 중에서 해야 하는 일의 총합이 최소가 되는 토양의 높이 배치를 구하세요.

다시 말해, 각 가지의 크기를 의미하는 크기 N×MN \times M의 양의 정수의 행렬 SS가 주어질 때, 다음의 조건을 만족시키고 각 토양의 높이 배치를 나타내는 크기 N×MN \times M의 음이 아닌 정수의 행렬 HH를 구하려고 합니다.

  • 1≤i,k≤N1 \le i, k \le N, 1≤j,l≤M1 \le j, l \le M, ∣i−k∣+∣j−l∣=1|i-k| + |j-l| = 1인 모든 정수 ii, jj, kk, ll에 대해서 다음 조건을 만족시켜야 합니다.

    • S_i,j<S_k,lS\_{i, j} < S\_{k, l}이면 H_i,j<H_k,lH\_{i, j} < H\_{k, l}입니다.
    • S_i,j=S_k,lS\_{i, j} = S\_{k, l}이면 H_i,j=H_k,lH\_{i, j} = H\_{k, l}입니다.
    • S_i,j>S_k,lS\_{i, j} > S\_{k, l}이면 H_i,j>H_k,lH\_{i, j} > H\_{k, l}입니다.
  • HH의 모든 원소의 합이 최소여야 합니다.

입력

첫 번째 줄에 농장의 세로 길이 NN과 농장의 가로 길이 MM이 공백으로 구분되어 주어집니다. (1≤N,M≤1,000)(1 \le N, M \le 1\\,000)

다음 NN개 줄 각각에 각 행에 있는 가지들의 크기를 나타내는 MM개의 양의 정수가 공백으로 구분되어 주어집니다. 그중 ii번째 줄의 jj번째 수는 ii행 jj열에 있는 가지의 크기 S_i,jS\_{i, j}를 나타냅니다. (1≤S_i,j≤109)(1 \le S\_{i, j} \le 10^9)

출력

NN개의 줄 각각에 MM개의 음이 아닌 정수를 공백으로 구분하여 출력합니다.

ii번째 줄의 jj번째 수는 해야 하는 일의 총합이 최소가 되는 토양의 높이 배치에서 ii행 jj열 토양의 높이, H_i,jH\_{i, j}여야 합니다.

답이 되는 행렬 HH는 유일합니다.

예제3

  1. 예제 1

    입력
    2 3
    1 5 2
    2 5 1
    
    예상 출력
    0 2 1
    1 2 0
    
  2. 예제 2

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

    입력
    5 5
    4 3 3 3 3
    4 2 2 1 1
    2 2 2 5 5
    2 2 5 5 5
    2 2 5 5 5
    
    예상 출력
    3 2 2 2 2
    3 1 1 0 0
    1 1 1 2 2
    1 1 2 2 2
    1 1 2 2 2