Cod sursa(job #2799516)

Utilizator bem.andreiIceman bem.andrei Data 13 noiembrie 2021 12:06:28
Problema Semne Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <bits/stdc++.h>

using namespace std;
ifstream r("semne.in");
ofstream w("semne.out");
vector<int>v, g;
long long h[5000003];
int main()
{
    long long n, s, sumv=0, sumg=0;
    r>>n>>s;
    for(int i=0;i<n;i++){
        r>>h[i];
        sumv+=h[i];
        v.push_back(i);
    }
    while(sumv-sumg!=s){
        if(sumv-sumg>s){
            swap(v[v.size()-1], v[rand()%v.size()]);
            sumg+=h[v.back()];
            sumv-=h[v.back()];
            g.push_back(v.back());
            v.pop_back();
        }
        else{
            swap(g[g.size()-1], g[rand()%g.size()]);
            sumv+=h[g.back()];
            sumg-=h[g.back()];
            v.push_back(g.back());
            g.pop_back();
        }
    }
    for(auto it: v){
        h[it]=-1;
    }
    for(int i=0;i<n;i++){
        if(h[i]==-1){
            w<<"+";
        }
        else{
            w<<"-";
        }
    }
    return 0;
}