Cod sursa(job #29940)

Utilizator vmaneavmanea vmanea Data 11 martie 2007 20:15:43
Problema Semne Scor 10
Compilator c Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <stdio.h>
#include <math.h>
#define nmax 50001

long N, i, A[nmax], S[nmax], SS, suma, dif, difn;

int main(void)
{
	freopen("semne.in","r", stdin);
	freopen("semne.out", "w", stdout);

	scanf("%ld%ld", &N, &SS);

	for (i = 1; i <= N; ++i)
		scanf("%ld", &A[i]);

	for (i = 1; i <= N; ++i)
	{
		S[i] = -1;
		suma = suma + S[i] * A[i];
	}

	for (i = 1; i <= N && suma < SS; ++i)
	{
		suma = suma - S[i] * 2 * A[i];
		S[i] = -S[i];
	}

	dif = abs(SS - suma);

	while (suma != SS)
	{
		for (i = 1; i <= N && suma != SS; ++i)
		{
			difn = abs(SS - suma + 2 * A[i] * S[i]);

			if (difn < dif)
			{
				dif = difn;
				suma = suma - S[i] * 2 * A[i];
				S[i] *= -1;
			}
		}
	}

	for (i = 1; i <= N; ++i)
		if (S[i] == -1)
			printf("-");
		else
			printf("+");

	printf("\n");

	return 0;
}