Cod sursa(job #235229)

Utilizator anna_bozianuBozianu Ana anna_bozianu Data 23 decembrie 2008 08:43:07
Problema Semne Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#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("+");
}