解法
\(a_{i}\)の和の最大を求める. まず,各\(i \in N\) に対して \(a_{i}\) の最大を見積もる. \(b_{i} \geq max(a_{i}, a_{i+1}) \geq a_{i}\) かつ \(b_{i-1} \geq max(a_{i-1}, a_{i}) \geq a_{i}\) であるから, \(min(b_{i}, b_{i-1}) \geq a_{i}\). ただし,\(b_{-1} = b_{n-1} = \infty\)とする.
逆に,各 \(i \in N\) に対して \(a_{i} := min(b_{i-1}, b_{i})\) とおけば,\(b\) に関する条件を満たす.
使っている記号,マクロ等 "https://ecsmtlir.hatenablog.com/entry/2022/12/23/131925"
int main() {
ll n;
cin >> n;
vll b(n-1); cinv(b);
ll ans = 0;
ans += b.front();
ans += b.back();
rep(i,n-2){
ans += min(b[i], b[i+1]);
}
cout << ans << endl;
return 0;
}