题解:
题目大意是说b[i]=a[i]+a[n-i]的值,并且要保证是递增的,我们可以想,让左边的尽可能小,并且比右边的小,我们就可以去他左边的和右边较小的最大值即可,需要注意的是数据范围是 long long int型的
代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
int n ;
cin >> n;
ll k ;
ll a[200005];
for(int i = 0 ;i < t /2 ;i++){
cin >> k;
if(t == 0){
a[0] = 0;
a[n-1] = k;
}
else {
//满足非降序,肯定a[i] >= a[i-1]
a[i] = max(a[i-1],min(a[n-i],k-a[n-i]));
a[n-i-1] = k-a[i];
}
}
for(int i = 0; i < n ;i ++){
cout << a[i] << " ";
}
return 0;
}