Cod sursa(job #1993633)

Utilizator Mircea_DonciuDonciu Mircea Mircea_Donciu Data 23 iunie 2017 14:05:01
Problema Semne Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include<fstream>
#include<ctime>
#include<cstdlib>
#include<vector>
using namespace std;
ifstream f("semne.in");
ofstream g("semne.out");
vector<int> Plus,Minus;
char R[50001];
int A[50001],i,n,poz;
long long S,s;
int main()
{
    srand(time(NULL));
    f>>n>>S;
    for(i=0; i<n; i++)
    {
        f>>A[i];
        Plus.push_back(i);
        s+=A[i];
        R[i]='+';
    }
    while(s!=S)
    {
        if(s>S)
        {
            poz=rand()%Plus.size();
            R[Plus[poz]]='-';
            s=s-2LL*A[Plus[poz]];
            Minus.push_back(Plus[poz]);
            Plus[poz]=Plus.back();
            Plus.pop_back();
        }
        else
        {
            poz=rand()%Minus.size();
            R[Minus[poz]]='+';
            s=s+2LL*A[Minus[poz]];
            Plus.push_back(Minus[poz]);
            Minus[poz]=Minus.back();
            Minus.pop_back();
        }
    }
    g<<R<<"\n";
    f.close(); g.close();
    return 0;
}