Pagini recente » Cod sursa (job #317984) | Cod sursa (job #1481857) | Cod sursa (job #3158841) | Cod sursa (job #1306307) | Cod sursa (job #235229)
Cod sursa(job #235229)
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 50001
int np,nn,nt,s[N],i,p[N],n[N];
long long dif,a[N];
void readd(),solve(),prints();
int main()
{
readd();
solve();
prints();
return 0;
}
void readd()
{
freopen("semne.in","rt",stdin);
freopen("semne.out","wt",stdout);
scanf("%d%lld",&nt,&dif);dif=-dif;
for(i=1;i<=nt;i++){scanf("%lld",&a[i]);p[i]=i;dif+=a[i];}
np=nt;srand(time(0));
}
void solve()
{ int is;
while(dif)
{
while(dif>0)
{ is=rand()%np+1;
n[++nn]=p[is];
p[is]=p[np--];
s[n[nn]]++;
dif-=a[n[nn]]<<1;
}
while(dif<0)
{ is=rand()%nn+1;
p[++np]=n[is];
n[is]=n[nn--];
s[p[np]]--;
dif+=a[p[np]]<<1;
}
}
}
void prints()
{
for(i=1;i<=nt;i++)(s[i])?printf("-"):printf("+");
}