빗물
높이가 \(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
코멘트