Cod sursa(job #2513612)

Utilizator dey44andIoja Andrei-Iosif dey44and Data 23 decembrie 2019 15:23:16
Problema Semne Scor 60
Compilator cpp-64 Status done
Runda temadec2019 Marime 1.18 kb
#include <fstream>

#define input "semne.in"
#define output "semne.out"
#define NMAX 50005

using namespace std;

ifstream in(input);
ofstream out(output);

int sir[NMAX], semn[NMAX], N;
long long S, P;

void Read_Data()
{
    in >> N >> S;
    for(int i = 1; i <= N; i++)
        in >> sir[i];
    for(int i = 1; i <= N; i++)
        if(P <= S) semn[i] = 1, P += sir[i];
        else semn[i] = -1, P -= sir[i];
}

void Solve()
{
    bool valid = true;
    while(valid)
    {
        for(int i = 1; i <= N; i++)
            if(P <= S)
            {
                if(semn[i] == -1) P += 2 * sir[i], semn[i] = 1;
                if(P == S)
                {
                    valid = false;
                    break;
                }
            }
            else
            {
                if(semn[i] == 1) P -= 2 * sir[i], semn[i] = -1;
                if(P == S)
                {
                    valid = false;
                    break;
                }
            }
    }
    for(int i = 1; i <= N; i++)
        if(semn[i] == -1) out << "-";
        else out << "+";
}

int main()
{
    Read_Data();
    Solve();
    return 0;
}