n = gets.to_s.to_i y = gets.to_s.split.map{|t| t.to_i } inf = 10**4 * n m = y.max dp = Array.new(n+1){ [inf] * (m+1) } dp[0][0] = 0 m = 0 y.each_with_index do |t, i| m = t if m < t dp[i+1][0] = dp[i][0] + t 1.upto(t) do |j| dp[i+1][j] = [dp[i][j] + t - j, dp[i+1][j-1] - 1 ].min end (t+1).upto(m) do |j| dp[i+1][j] = [dp[i][j] + j - t, dp[i+1][j-1] + 1 ].min end end # pp dp ans = dp[n].min puts ans