Cod sursa(job #2196629)

Utilizator Lazar_LaurentiuLazar Laurentiu Lazar_Laurentiu Data 19 aprilie 2018 21:17:57
Problema Semne Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <iostream>
#include <fstream>
#include <random>
#define MAX 50010

using namespace std;
typedef long long ll;

ll n,s,sf,nr;
ll a[MAX];
bool sm[MAX];

int main()
{
    ifstream f ("semne.in");
    ofstream g ("semne.out");
    f>>n>>sf;
    for(ll i=1;i<=n;i++){
      f>>a[i];
      if(s<=0)s+=a[i],sm[i]=1;
      else s-=a[i],sm[i]=0;
    }
    default_random_engine g1,g2;
    uniform_int_distribution<int> distribution(1,n);  //??
    while(s!=sf)
      if(s<sf){
        nr=distribution(g1);
        if(sm[nr]==0)s+=2*a[nr];
        sm[nr]=1;
      } else {
        nr=distribution(g2);
        if(sm[nr]==1)s-=2*a[nr];
        sm[nr]=0;
      }
    for(ll i=1;i<=n;i++) if(sm[i]==0)g<<'-'; else g<<'+';
    g<<'\n';
    f.close ();
    g.close ();
    return 0;
}