Pagini recente » Cod sursa (job #598984) | Cod sursa (job #3199211) | Cod sursa (job #2574461) | Cod sursa (job #2210970) | Cod sursa (job #1147609)
#include<stdio.h>
#include<ctime>
#include<cstdlib>
#define nmax 50005
long long n, s, i, x, p, pozx, sum[3], ne[3];
long long smn[nmax], mult[3][nmax], v[nmax];
int main()
{
freopen("semne.in","r",stdin);
freopen("semne.out","w",stdout);
srand(time(0));
scanf("%lld %lld",&n,&s);
for (i=1;i<=n;i++)
{
scanf("%lld",&x);
p=((sum[0]-sum[1])>s);
sum[p]+=x;
smn[i]=p;
mult[p][++ne[p]]=i; v[i]=i;
}
while ((sum[0]-sum[1])!=s)
{
p=1-((sum[0]-sum[1])>s);
pozx=rand()%ne[p]+1; x=v[mult[p][pozx]];
smn[mult[p][pozx]]=1-smn[mult[p][pozx]];
sum[p]-=x;
mult[p][pozx]=mult[p][ne[p]]; ne[p]--;
sum[1-p]+=x;
mult[1-p][++ne[1-p]]=x;
}
for (i=1;i<=n;i++)
if (smn[i]==0)
printf("+");
else
printf("-");
return 0;
}