만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

새 분수

면접 대비

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

요약
기둥 높이가 주어진 n×m 격자에서 테두리로 물이 빠지지 않고 가둘 수 있는 물의 최대 부피를 구합니다.
난이도

보통10점 중 6점

유형
힙, BFS, 그리디
정답자
아직 제출이 없습니다

문제

오늘 알파를 거닐던 로렐린은 곧 열리고 물로 채워질 새 분수를 발견했다. 이 분수에 물이 얼마나 담길지 궁금해졌다.

분수는 기둥들이 모인 형태다. 분수의 바닥은 n×mn \times m 직사각형 격자이며, nmnm개의 단위 정사각형으로 나뉜다. 행은 1부터 nn까지, 열은 1부터 mm까지 번호가 매겨진다. 각 칸에는 양의 정수 높이의 기둥이 하나씩 있고, ii행 jj열 칸의 기둥 높이는 hi,jh_{i,j}다.

분수가 열리면 위에서 물이 부어져 분수 안의 빈 공간을 모두 채운다. 형식적으로 말하면, 분수가 열리는 순간 각 기둥 위에 0 이상의 높이를 가진 물기둥이 생긴다. ii행 jj열 기둥 위의 물 높이를 wi,jw_{i,j}라고 하자. 다음 두 조건이 성립하면 물이 분수 밖으로 새지 않는다고 본다.

  • i∈{1,n}i \in \{1, n\} 또는 j∈{1,m}j \in \{1, m\}이면 wi,j=0w_{i,j} = 0이다. 즉, 가장자리 기둥에는 물이 없고 물은 분수 밖으로 빠진다.
  • ∣i1−i2∣+∣j1−j2∣=1|i_1 - i_2| + |j_1 - j_2| = 1이면 wi1,j1=0w_{i_1,j_1} = 0이거나 hi1,j1+wi1,j1≤hi2,j2+wi2,j2h_{i_1,j_1} + w_{i_1,j_1} \le h_{i_2,j_2} + w_{i_2,j_2}이다. 즉, 물이 올라간 기둥의 전체 높이는 옆에 붙은 기둥 각각의 전체 높이를 넘지 않는다.

물의 총량은 모든 wi,jw_{i,j}의 합이다. 분수는 이 총량이 최대가 되도록 채워진다.

로렐린은 바닥 크기와 모든 기둥의 높이를 기억하지만, 담기는 물의 양은 계산하지 못했다. 이 값을 계산하는 프로그램을 작성해 달라.

입력

첫 줄에는 바닥의 행 수와 열 수를 나타내는 정수 nn과 mm이 주어진다(3≤n,m≤9003 \le n, m \le 900). 다음 nn개 줄에는 각각 mm개의 정수가 주어진다. i+1i+1번째 줄에는 hi,1,hi,2,…,hi,mh_{i,1}, h_{i,2}, \dots, h_{i,m}이 있으며, 이는 ii행에 있는 기둥들의 높이다(1≤hi,j≤1091 \le h_{i,j} \le 10^9).

출력

분수에 담을 수 있는 물의 최대 총량을 정수 하나로 출력한다.

힌트

첫 번째 테스트에서는 w2,2=2w_{2,2} = 2, w2,3=1w_{2,3} = 1이고 나머지 모든 기둥의 wi,jw_{i,j}가 0일 때 최대 용량에 도달한다. 이 값들이 모든 조건을 만족하는 것은 쉽게 확인할 수 있으며, 물의 총량은 3이다.

두 번째 테스트에서는 두 기둥에만 물이 올라갈 수 있다. w2,2=1w_{2,2} = 1, w2,3=1w_{2,3} = 1이고 나머지 기둥의 wi,jw_{i,j}가 모두 0일 때 최대가 되며, 물의 총량은 2이다.

예제2

  1. 예제 1

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

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