Cod sursa(job #1613731)

Utilizator ade_tomiEnache Adelina ade_tomi Data 25 februarie 2016 16:39:24
Problema Semne Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.25 kb
#include<iostream>
#include<fstream>
#include<cstdlib>
#include<ctime>
#include<vector>
using namespace std;
vector<int> plu,minu;
int a[50005],poz,i,n;
long long sum,s;
char sol[50005];
int main()
{

    ifstream cin("semne.in");
    ofstream cout("semne.out");
    cin>>n>>s;
    int semn;
    srand(time(NULL));
    for(i=1;i<=n;i++)
    {

        cin>>a[i];
        semn=rand()%2;
        if(semn==0){
            minu.push_back(i);
            sum-=a[i];
        }
        else {
            sum+=a[i];
            plu.push_back(i);
        }
    }
    while(sum!=s)
    {
        if(sum>s)
        {

            poz=rand()%plu.size();
            minu.push_back(plu[poz]);
            sum-=a[plu[poz]]*2;
            swap(plu[poz],plu[plu.size()-1]);
            plu.pop_back();
        }
        if(sum<s)
        {
            poz=rand()%minu.size();
            plu.push_back(minu[poz]);
            sum+=a[minu[poz]]*2;
            swap(minu[poz],minu[minu.size()-1]);
            minu.pop_back();

        }

    }
    for(i=0;i<plu.size();i++)

    {
        sol[plu[i]]='+';
    }
    for(i=0;i<minu.size();i++)
        sol[minu[i]]='-';
    for(i=1;i<=n;i++)
        cout<<sol[i];
    return 0;
}