Cod sursa(job #341043)

Utilizator ZethpixZethpix Zethpix Data 17 august 2009 13:10:19
Problema Semne Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
FILE *f,*g;
long long s,S;
long n,i,a[50002],sol[50002];
int main(){
	f=fopen("semne.in","r");
	g=fopen("semne.out","w");
	fscanf(f,"%ld%lld",&n,&S);
	for(i=1;i<=n;i++)
		fscanf(f,"%ld",&a[i]);
    srand(time(NULL));
	int ok=1;
	do{
		for(i=1;i<=n;i++)
			sol[i]=rand()%2;
		s=0;
		for(i=1;i<=n;i++)
			if(sol[i]==1)s+=a[i];
			else s-=a[i];
		if(s>0&&S>0) ok=0;
		else
			if(s<0&&S<0) ok=0;
	}while(ok);
	ok=1;
	do{
		i=rand()%n+1;
		if(s<S&&sol[i]==0){
			sol[i]=1;
			s+=a[i];
			s+=a[i];
		}
		if(s>S&&sol[i]==1){
			sol[i]=0;
			s-=a[i];
			s-=a[i];
		}
		if(s==S)ok=0;
	}while(ok);
	for(i=1;i<=n;i++)
		if(sol[i]==0) fprintf(g,"-");
		else fprintf(g,"+");
	fprintf(g,"\n");
	fclose(f);
	fclose(g);
	return 0;
}