Official
C - 道路の凹みの補修 / Repairing Road Potholes Editorial
by
C - 道路の凹みの補修 / Repairing Road Potholes Editorial
by
sounansya
\(H_{i-1}>H_i<H_{i+1}\) を満たす \(i\) に対して、その箇所が凹んでいない状態にするためには \(\min(H_{i-1},H_{i+1})-H_i\) 回の操作が必要です。
逆に、凹んでいる場所それぞれに対して \(\min(H_{i-1},H_{i+1})-H_i\) 回の操作を行った場合、凹んでいる場所が新たに発生することはなく、凹んでいる場所は \(0\) になります。
したがって、求める値は \(H_{i-1}>H_i<H_{i+1}\) を満たす \(i\) 全てに対する \(\min(H_{i-1},H_{i+1})-H_i\) の総和です。
import sys
input = sys.stdin.readline
n = int(input())
h = list(map(int, input().split()))
ans = 0
for i in range(1, n - 1):
if h[i - 1] > h[i] < h[i + 1]:
val = min(h[i - 1], h[i + 1])
ans += val - h[i]
h[i] = val
print(ans)
