算法
(图论、数学) $O(N)$
由此可知,大坝 $0$ 的积水量 $x_0$ 为 $2x = A_5 - A_4 + A_3 - A_2 + A_1$
然后根据 $\frac{x_i + x_{i + 1}}{2} = A_i$,可求出 $\frac{x_{i + 1}}{2}$
C++ 代码
#include <bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < (n); ++i)
using std::cin;
using std::cout;
using std::vector;
using ll = long long;
int main() {
int n;
cin >> n;
vector<int> a(n);
rep(i, n) cin >> a[i];
ll x2 = 0;
rep(i, n) {
if (i % 2) x2 -= a[i];
else x2 += a[i];
}
vector<int> ans(n);
ans[0] = x2 / 2;
rep(i, n) {
ans[i + 1] = a[i] - ans[i];
}
rep(i, n) ans[i] *= 2;
rep(i, n) cout << ans[i] << " ";
return 0;
}