Cod sursa(job #680226)

Utilizator tzipleatudTudor Tiplea tzipleatud Data 15 februarie 2012 00:01:01
Problema Semne Scor 90
Compilator cpp Status done
Runda Lista lui wefgef Marime 1.12 kb
#include <fstream>
#include <ctime>
#include <algorithm>
#include <vector>
#define pb push_back
#define ppb pop_back
#define NMAX 50010
#define p '+'
#define m '-'

using namespace std;

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

vector <int> M,P;
int N,i,A[NMAX],S,SP;
char ANS[NMAX];


int main() {
    srand(time(NULL));
    f >> N >> S;
    for (i=1;i<=N;i++) {
        f >> A[i];
        if (rand()%2) {
            ANS[i]=p;
            SP+=A[i];
            P.pb(i);
        }
        else {
            ANS[i]=m;
            SP-=A[i];
            M.pb(i);
        }
    }
    while (SP!=S)
        if (S>SP) {
            int X=rand()%M.size();
            ANS[M[X]]=p;
            P.pb(M[X]);
            SP+=2*A[M[X]];
            M[X]=M[M.size()-1];
            M.ppb();
        }
        else {
            int X=rand()%P.size();
            ANS[P[X]]=m;
            M.pb(P[X]);
            SP-=2*A[P[X]];
            P[X]=P[P.size()-1];
            P.ppb();
        }
    for (i=1;i<=N;i++) g << ANS[i];
    g << '\n';
    f.close();g.close();
    return 0;
}