Cod sursa(job #1872280)

Utilizator PaulStighiStiegelbauer Paul-Alexandru PaulStighi Data 8 februarie 2017 02:10:00
Problema Semne Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include<fstream>
#define NMax 50005
using namespace std;
ifstream fin("semne.in");
ofstream fout("semne.out");

long long N,S,Sum;
int A[NMax];
bool Semn[NMax],OK = 1;

void Read()
{
    fin>>N>>S;

    for(int i = 1 ; i <= N ; ++i)
    {
        fin>>A[i];
        Semn[i] = 1;
        Sum += A[i];
    }
}

void Solve(int poz)
{
    if(OK)
    {
        if(Sum != S)
        {
            int i = poz;

            while(i <= N)
            {
                Semn[i] = 0;
                Sum -= 2 * A[i];

                if(Sum >= S)    Solve(i+1);

                Semn[i] = 1;
                Sum += 2 * A[i];
                i++;
            }
        }
        else
        {
            for(int i = 1 ; i <= N ; ++i)
                if(Semn[i]) fout<<'+';
                else    fout<<'-';
            fout<<"\n";

            OK = 0;
        }
    }
}

int main()
{
    Read();
    Solve(1);

    fin.close();
    fout.close();
    return 0;
}