Cod sursa(job #1131601)

Utilizator otto1Palaga Vicentiu-Octavian otto1 Data 28 februarie 2014 21:57:31
Problema Semne Scor 90
Compilator cpp Status done
Runda Lista lui wefgef Marime 1.03 kb
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <fstream>
#define nmax 50001

using namespace std;

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

int v[nmax],n,i;
long long sum, s;
char semne[nmax];

int main()
{
    in >> n >> sum;
    for (i=1; i<=n; i++){
        in >> v[i];
        s+=v[i];
        semne[i]='+';
    }

    srand(time(0));

    while (s!=sum){
        if (s>sum){
            i=rand()%n+1;
            while (semne[i]=='-' && i<n) i++;
            if (semne[i]=='-' && i==n){
                i=1;
                while (semne[i]=='-') i++;
            }

            s-=2*v[i];
            semne[i]='-';
        }

        if (s<sum){
            i=rand()%n+1;
            while (semne[i]=='+' && i<n) i++;
            if (semne[i]=='+' && i==n){
                i=1;
                while (semne[i]=='+') i++;
            }

            s+=2*v[i];
            semne[i]='+';
        }
    }

    for (i=1; i<=n; i++) out << semne[i];

    return 0;
}