Cod sursa(job #1281784)

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

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

const int MAX_N = 50002;

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

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;

            if(m[p] == 0) {
                A -= v[p];
                B += v[p];
                m[p] = 1;
            }
        }
        else {
            int p = 1 + rand() % N;

            if(m[p] == 1) {
                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;
}