https://atcoder.jp/contests/abc140/tasks/abc140_c
解説
https://atcoder.jp/contests/abc140/submissions/7443482
なるべくA[i]を大きくするように考えたい。
A[i]中心に考えてみると、A[i]≦min(B[i-1],B[i])を満たす必要がありそう。
最大化したいので等式の場合を考えると、A[i]=min(B[i-1],B[i])である。
これで、A[2]~A[N-1]は定まる。
あとは、A[1]とA[N]だが、それぞれB[1]とB[N-1]に依存していて、その値未満にする必要性もないので、
A[1]=B[1], A[N]=B[N-1]とする。
その時のAの総和が答え。
int N, B[101]; //--------------------------------------------------------------------------------------------------- void _main() { cin >> N; rep(i, 1, N) cin >> B[i]; int ans = 0; ans += B[1]; // A[1] rep(i, 2, N) ans += min(B[i - 1], B[i]); // A[2]~A[N-1] ans += B[N-1]; // A[N] cout << ans << endl; }