Cod sursa(job #501311)

Utilizator ooctavTuchila Octavian ooctav Data 14 noiembrie 2010 18:36:53
Problema Semne Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include<cstdlib>
#include<ctime>
#include<cstdio>
#include<iostream>
using namespace std;

const int NMAX = 50005;

int N, S;
int A[NMAX];
int sum = 0;

void citire()
{
	cin >> N >> S;
	for(int i = 1 ; i <= N ; i++)
	{
		cin >> A[i];
		sum += A[i];
	}
}

inline int modul(int x)
{
	if(x > 0) 
		return x;
	return -x;
}

void obtine()
{
	srand(time(0));
	while(sum != S)
	{
		int x = rand() % N + 1;
		if(modul(sum - 2 * A[x] - S) < modul(sum - S))
		{
			sum -= 2 * A[x];
			A[x] *= -1;
		}
	}
}

void scrie()
{
	for(int i = 1 ; i <= N ; i++)
		if(A[i] > 0)
			printf("+");
		else
			printf("-");
}

int main()
{
	freopen("semne.in", "r", stdin);
	freopen("semne.out", "w", stdout);
	citire();
	obtine();
	scrie();
	return 0;
}