Cod sursa(job #29937)

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

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

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

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

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

	for (i = 1; i <= N; ++i)
	{
		S[i] = pow(-1, i);
		suma = suma + S[i] * A[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;
}