Pagini recente » Cod sursa (job #382983) | Cod sursa (job #2414368) | Cod sursa (job #2964115) | Cod sursa (job #1329317) | Cod sursa (job #91225)
Cod sursa(job #91225)
#include<stdio.h>
#include<stdlib.h>
long sa,sb,s;
int a[50001],b[50001],na,nb,n,x[50001],i;
int main()
{freopen("semne.in","r",stdin);
freopen("semne.out","w",stdout);
scanf("%d %lld",&n,&s);
na=n/2;nb=n-na;
for(i=1;i<=n;i++)
{scanf("%d",&x[i]);
if(i<=na) {a[i]=i;sa+=x[i];}
else {b[i-na]=i;sb+=x[i];}
}
while((sa-sb)!=s)
{while((sa-sb)>s)
{i=rand()%na+1;
b[++nb]=a[i]; sa=sa-x[a[i]];sb=sb+x[a[i]];
a[i]=a[na];
a[na]=0;
--na;}
while((sa-sb)<s)
{i=rand()%nb+1;
a[++na]=b[i]; sa=sa+x[b[i]];sb=sb-x[b[i]];
b[i]=b[nb];
b[nb]=0;
--nb;}
}
for(i=1;i<=na;i++) x[a[i]]=-1;
for(i=1;i<=n;i++)
if(x[i]==-1) printf("+");
else printf("-");
fclose(stdout); }