(https://atcoder.jp/contests/abc133/tasks/abc133_d)
思路:每座山为2Xi,每个坝为Ai。已知Ai,求出2Xi。
根据已知的X1,则可分别求出X2-n
代码:
#include<bits/stdc++.h> using namespace std; const int maxn=1e5+10; int a[maxn]; long long ans[maxn]; int main() { std::ios::sync_with_stdio(false); int n; cin >> n; for(int i=1;i<=n;i++) { cin >> a[i]; } long long sum=0; for(int i=1;i<=n-1;i++) { sum+=a[i]; if(i&1) sum-=2*a[i]; } sum=a[n]-sum; sum/=2; ans[1]=sum; for(int i=2;i<=n;i++) { ans[i]=a[i-1]-ans[i-1]; } cout << 2*ans[1]; for(int i=2;i<=n;i++) cout << " " << 2*ans[i]; return 0; }