Cod sursa(job #11839)

Utilizator c_sebiSebastian Crisan c_sebi Data 1 februarie 2007 21:39:08
Problema Semne Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <stdio.h>

long long a[50010], n, s, s2=0, x[50010], ok=1;
FILE*	g=fopen ("semne.out", "w");
void afis ()
{
	int i;
	for (i=0; i<n; i++) if (x[i]==0) fprintf (g, "+"); else fprintf (g, "-");
	ok=0;
}

void back (int k)
{  int i, cop;
	for (i=0; i<2; i++)
		{ x[k]=i;
		  cop=s2;
		  if (x[k]==0) s2+=a[k]; else s2-=a[k];
		  if (k==n-1) {if (s2==s) afis(); }
		  else back(k+1);
		  s2=cop;
		  if (!ok) return;
		}
}

int main()
{
	FILE *f;
	long long i;
	f=fopen ("semne.in", "r");
	fscanf (f, "%lld %lld", &n, &s);
	for (i=0; i<n; i++) fscanf (f, "%lld ", &a[i]);
	back(0);
	fclose(f); fclose(g);
	return 0;
}