Cod sursa(job #1558726)

Utilizator BLz0rDospra Cristian BLz0r Data 29 decembrie 2015 15:36:30
Problema Semne Scor 25
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <cstdio>
using namespace std;

#define Nmax 50002

FILE *f = fopen ( "semne.in", "r" );
FILE *g = fopen ( "semne.out", "w" );

int N, v[Nmax];
char sgn[Nmax];
long long S, Now = 0;
bool STOP = 0;

void bkt ( int poz ){

    if ( Now != S ){
        int i = poz;

        while ( i > 0 && !STOP ){

            sgn[i] = '-';
            Now -= 2 * v[i];

            if ( Now >= S )
                bkt ( poz - 1 );

            if ( !STOP ){
                sgn[i] = '+';
                Now += 2 * v[i];
                i--;
            }
        }
    }
    else
        STOP = 1;

}

int main(){

    fscanf ( f, "%d%lld", &N, &S );

    for ( int i = 1; i <= N; ++i ){
        fscanf ( f, "%d", &v[i] );
        sgn[i] = '+';
        Now += v[i];
    }

    bkt ( N );

    fprintf( g, "%s", sgn+1 );

    return 0;
}