Cod sursa(job #1281779)

Utilizator Mihai22eMihai Ionut Enache Mihai22e Data 3 decembrie 2014 18:50:59
Problema Semne Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <fstream>

#include <cstdlib>
#include <ctime>
using namespace std;

const int MAX_N = 50002;

int N, S;
int v[MAX_N], m[MAX_N];

int main() {
    srand(time(NULL));

    ifstream f("semne.in");
    ofstream g("semne.out");

    f >> N >> S;

    long long A = 0, B = 0;
    for(int i = 1; i <= N; ++i) {
        f >> v[i];
        A += v[i];
    }

    while(A - B != S) {
        if(A - B > S) {
            int p = 1 + rand() % N;

            while(m[p] == 1)
                p = 1 + rand() % N;

            A -= v[p];
            B += v[p];

            m[p] = 1;
        }
        else {
            int p = 1 + rand() % N;

            while(m[p] == 0)
                p = 1 + rand() % N;

            A += v[p];
            B -= v[p];

            m[p] = 0;
        }
    }

    for(int i = 1; i <= N; ++i)
        if(m[i])
            g << "-";
        else g << "+";
    g << "\n";

    f.close();
    g.close();

    return 0;
}