빗물


답안 제출

Points: 11
시간 제한: 2.0s
메모리 제한: 1G

문제 유형

높이가 \(H\)이고 너비가 \(W\)인 2차원 세계가 있다. 이 세계의 바닥은 막혀 있으며, 각 위치에는 블록이 아래에서부터 빈틈없이 쌓여 있다.

왼쪽에서 \(i\)번째 위치에 쌓인 블록의 높이는 \(A_i\)이다. 블록이 없는 위치의 높이는 \(0\)이다.

비가 충분히 내린 뒤 블록 사이에 고이는 빗물의 총량을 구하여라. 블록 한 칸과 물 한 칸의 크기는 각각 \(1 \times 1\)이며, 물 한 칸의 양을 \(1\)로 계산한다. 세계의 양옆으로 흘러나간 물은 고이지 않는다.

아래 그림은 \(H=4\), \(W=4\)이고 블록의 높이가 차례로 \(3,0,1,4\)인 경우를 나타낸다. 파란색 부분이 고인 빗물이다.

입력

첫째 줄에 2차원 세계의 높이 \(H\)와 너비 \(W\)가 공백으로 구분되어 주어진다.

둘째 줄에 각 위치의 블록 높이 \(A_1,A_2,\dots,A_W\)가 왼쪽부터 순서대로 공백으로 구분되어 주어진다.

출력

블록 사이에 고이는 빗물의 총량을 출력한다.

빗물이 전혀 고이지 않는다면 \(0\)을 출력한다.

제한 사항

  • \(1 \le H,W \le 100,000\)
  • \(0 \le A_i \le H\)

부분 점수

번호 조건 점수
1 \(W=3\) 5
2 모든 \(A_i\)가 \(0\) 또는 \(1\)이다. 5
3 \(A_1=A_W=H\) 10
4 \(H,W \le 500\) 20
5 \(W \le 5,000\) 25
6 추가 제한이 없다. 35

예제 입력 1

4 4
3 0 1 4

예제 출력 1

5

예제 설명 1

두 번째 위치에는 물이 \(3\)만큼, 세 번째 위치에는 물이 \(2\)만큼 고인다. 따라서 고이는 빗물의 총량은 \(5\)이다.

예제 입력 2

4 8
3 1 2 3 4 1 1 2

예제 출력 2

5

예제 입력 3

3 5
0 0 0 2 0

예제 출력 3

0

코멘트

현재 작성된 코멘트가 없습니다.