Cod sursa(job #1733775)

Utilizator alittlezzCazaciuc Valentin alittlezz Data 25 iulie 2016 18:01:37
Problema Semne Scor 100
Compilator cpp Status done
Runda Lista lui wefgef Marime 1.09 kb
#include <fstream>
#include <math.h>
#include <algorithm>

using namespace std;
#define ll long long
#define llu long long unsigned
#define pb push_back
#define mp make_pair

string problemName = "semne";
string inFile = problemName+".in";
string outFile = problemName+".out";
ifstream fin(inFile.c_str());
ofstream fout(outFile.c_str());

const int N = 5e4;
int v[N+5];
ll s,cur;
char sol[N+5];
bool solved;

void bkt(int poz){
    if(solved == true){
        return;
    }
    if(cur != s){
        while(poz && solved == false){
            cur -= 1LL*2*v[poz];
            sol[poz] = '-';
            if(cur >= s){
                bkt(poz-1);
            }
            if(solved == false){
                sol[poz] = '+';
                cur += 1LL*2*v[poz];
                poz--;
            }
        }
    }else{
        fout<<sol+1;
        solved = true;
    }
}

int main(){
    int n,i;
    solved = false;
    fin>>n>>s;
    for(i = 1;i <= n;i++){
        fin>>v[i];
        cur += v[i];
        sol[i] = '+';
    }
    bkt(n);
    return 0;
}