Cod sursa(job #1001716)

Utilizator andreiblaj17Andrei Blaj andreiblaj17 Data 25 septembrie 2013 21:11:10
Problema Semne Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 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_t(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];
    out << "\n";
    
    return 0;
}