Cod sursa(job #50969)

Utilizator raula_sanChis Raoul raula_san Data 9 aprilie 2007 14:41:46
Problema Semne Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <stdio.h>
#include <stdlib.h>

#define dim 50001

long long A[dim];
long long S, Sum;

long N;

char Sol[dim];

void get_data();
void solve();
void print();

int main()
{
    get_data();
    solve();
    print();
    
    return 0;
}

void get_data()
{
     freopen("semne.in", "r", stdin);
     
     long i;
     for(scanf("%ld %lld", &N, &S), i=1; i<=N; ++i)
     {
                      scanf("%lld", A+i);
					  Sol[i-1] = '+';
                      Sum += A[i];
     }
     
     fclose(stdin);
}

void solve()
{
	 long x;
	 while(Sum != S)
	 {
			   if(Sum > S)
			   {
					  x = rand() % N;

					  if(Sol[x] != '-')
					  {
						Sum -= A[x+1];
						Sum -= A[x+1];
						Sol[x] = '-';
					  }
			   }
			   else
			   {
				   x = rand() % N;

				   if(Sol[x] != '+')
				   {
                   		Sum += A[x+1];
						Sum += A[x+1];
						Sol[x] = '+';
				   }
			   }
     }
}

void print()
{
     freopen("semne.out", "w", stdout);
     
     puts(Sol);
     
     fclose(stdout);
}