Cod sursa(job #2196937)

Utilizator Lazar_LaurentiuLazar Laurentiu Lazar_Laurentiu Data 20 aprilie 2018 18:13:31
Problema Semne Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <random>
#include <ctime>
#define MAX 50010

using namespace std;
typedef long long ll;

ll n,s,nrp,nr,st,dr,mij,sf;
ll a[MAX];
bool sm[MAX];
vector<int> v1,v2;

int main()
{
    ifstream f ("semne.in");
    ofstream g ("semne.out");
    f>>n>>sf;
    for(ll i=1;i<=n;i++){
      f>>a[i];
      s+=a[i],sm[i]=1,nrp++,v1.push_back(i);
    }
    nrp=n; srand(time(0));
    while(s!=sf){
      nr=rand();
      if(s<sf){
        nr=nr%(v2.size());
        s+=a[v2[nr]]*2,sm[v2[nr]]=1,v1.push_back(v2[nr]),v2.erase(v2.begin()+nr);
      } else {
        //cout<<v1.size()<<" ";
        nr=nr%(v1.size());
        s-=a[v1[nr]]*2,sm[v1[nr]]=0,v2.push_back(v1[nr]),v1.erase(v1.begin()+nr);
      }
    }
    for(ll i=1;i<=n;i++)
      if(sm[i]==0)g<<'-';
      else g<<'+';
    g<<'\n';
    f.close ();
    g.close ();
    return 0;
}