Cod sursa(job #1558609)

Utilizator BLz0rDospra Cristian BLz0r Data 29 decembrie 2015 13:51:52
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;
bool STOP = 0;

void bkt ( int poz ){

    if ( STOP || Now == S )
        return;

    for ( int i = poz; i >= 1 && !STOP; --i ){

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

        if ( Now == S ){
            STOP = 1;
            break;
        }

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

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

}

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;
}