题解 CF257D 【Sum】
题意:
给一个数组
你要为其中每个数加一个符号,使得它们的和在
考虑从后往前贪心。设当前状态下 -,否则将符号设为 + 并将
代码:
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,a[100001],s,ans[100001],b[100001],tmp;
signed main()
{
scanf("%lld",&n);
for(int i=1;i<=n;i++)scanf("%lld",&a[i]);
s=a[n];
for(int i=n-1;i;i--)
{
if(s>a[i])ans[i]=1;
else b[i+1]=1;
s=abs(s-a[i]);
}
for(int i=1;i<=n;i++)tmp^=b[i],putchar(tmp^ans[i]?'-':'+');
return 0;
}