Pagini recente » Cod sursa (job #1576994) | Cod sursa (job #1875927) | Cod sursa (job #2426356) | Cod sursa (job #1835419) | Cod sursa (job #83054)
Cod sursa(job #83054)
#include<stdio.h>
#include<math.h>
#include<iostream.h>
#include<stdlib.h>
long long s, v[50002], n, semn[5002], suma, minus[50000], plus[50002], a, b;
int main()
{
freopen("semne.in","r",stdin);
freopen("semne.out","w",stdout);
scanf("%lld %lld", &n, &s);
srand(time(0));
long long i, x;
for (i=0; i<n; i++) { scanf("%lld",&v[i]), semn[i]=rand()&1;
if (semn[i]==0) suma+=v[i], plus[a++]=i;
else suma-=v[i], minus[b++]=i;}
while (suma!=s)
{
if (suma<s)
{ x=rand()%b;
suma+=(v[minus[x]]<<1);
--semn[minus[x]];
plus[++a]=minus[x];
minus[x]=minus[b--];
}
else
{ x=rand()%a;
suma+=(v[plus[x]]<<1);
minus[++b]=plus[x];
++semn[plus[x]];
plus[x]=plus[a--];
}
}
for (i=0; i<n; i++)
if (semn[i]==0)
printf("+");
else printf("-");
return 0;
}