Pagini recente » Cod sursa (job #720341) | Cod sursa (job #1883994) | Cod sursa (job #1276422) | Cod sursa (job #1567536) | Cod sursa (job #340482)
Cod sursa(job #340482)
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int n,v[50005],v1[50005],v2[50005],sol[50005];
long long s,suma;
int main()
{
freopen("semne.in","r",stdin);
freopen("semne.out","w",stdout);
srand(time(0));
scanf("%d%lld",&n,&s);
int i;
for(i=1;i<=n;i++)
{
scanf("%d",&v[i]);
if(suma<s)
{
suma+=v[i];
v1[++v1[0]]=i;
sol[i]=1;
}
else
{
suma-=v[i];
v2[++v2[0]]=i;
}
}
while(s!=suma)
if(suma<s)
{
i=rand()%v2[0]+1;
suma+=(v[v2[i]]<<1);
sol[v2[i]]=1;
v1[++v1[0]]=v2[i];
v2[i]=v2[v2[0]];
v2[0]--;
}
else
{
i=rand()%v1[0]+1;
suma-=(v[v1[i]]<<1);
sol[v1[i]]=0;
v2[++v2[0]]=v1[i];
v1[i]=v1[v1[0]];
v1[0]--;
}
for(i=1;i<=n;i++)
if(sol[i])
printf("+");
else
printf("-");
return 0;
}