https://codeforces.com/contest/1326/problem/B
解説
https://codeforces.com/contest/1326/submission/73896052
実は順番に構築していけばいい。
x[0]は0で固定。
b[i]=a[i]-x[i]なので、a[i]=b[i]+x[i]である。
なので、a[0]=b[0]+x[0]を使って、a[0]を計算可能。
a[0]があれば、x[1]が計算できる。
a[1]=b[1]+x[1]でa[i]を計算。
a[0],a[1]があれば、x[2]が計算できる。
これを繰り返せば構築可能。
int N; ll B[201010]; ll A[201010], X[201010]; //--------------------------------------------------------------------------------------------------- void _main() { cin >> N; rep(i, 0, N) cin >> B[i]; ll ma = 0; X[0] = 0; rep(i, 0, N) { // A[i] - X[i] = B[i] A[i] = B[i] + X[i]; chmax(ma, A[i]); X[i + 1] = ma; } rep(i, 0, N) { if(i) printf(" "); printf("%lld", A[i]); } printf("\n"); }