Cod sursa(job #49874)

Utilizator cos_minBondane Cosmin cos_min Data 6 aprilie 2007 15:21:56
Problema Semne Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.24 kb
#include <stdio.h>
#include <fstream>
using namespace std;

#define in "semne.in"
#define out "semne.out"
#define dim 50001

bool Semn[dim];
long long A[dim];
int S, stotal = 0;
int N;

int main()
{
    freopen(in,"r",stdin);
    freopen(out,"w",stdout);
    
    scanf("%d", &N );
    scanf("%lld", &S);
    
    for ( int i = 1; i <= N; i++ )
    {
        scanf("%lld", &A[i]);
        stotal += A[i];
    }
    
    if ( stotal == S )
    {
         for ( int i = 1; i <= N; i++ )
             printf("+");
         
         return 0;
    }
    
    if ( stotal == -S )
    {
         for ( int i = 1; i <= N; i++ )
             printf("+");
         
         return 0; 
    }
        
    memset(Semn,0,sizeof(Semn) );
    int gasit = 0;
    
    while ( gasit == 0 )
    {
          stotal = 0;
          for ( int i = 1; i <= N; i++ )
          {
              Semn[i] = rand()%2;
              if ( Semn[i] == 1 ) stotal += A[i];
              else                stotal -= A[i];
          }
          
          if ( stotal == S ) gasit = 1;
    }
    
    for ( int i = 1; i <= N; i++ )
    {
        if ( Semn[i] == 1 ) printf("+");
        else                printf("-");
    }
     
}