Cod sursa(job #2799986)

Utilizator Cosmin2004_InfoMoldoveanu Cosmin Cosmin2004_Info Data 13 noiembrie 2021 14:37:21
Problema Semne Scor 85
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("semne.in");
ofstream fout("semne.out");
const int NMAX = 5e4;
int h[NMAX + 5];

int main()
{
    int n, k;
    long long s = 0;
    fin >> n >> k;
    vector <int> a(n), b;
    string res(n, '+');
    iota(a.begin(), a.end(), 0);
    random_shuffle(a.begin(), a.end());
    for(int i = 0; i < n; i++)
        fin >> h[i],
        s += h[i];
    while(s != k) {
        if(s > k) {
            int r = rand() % a.size();
            swap(a[r], a[a.size() - 1]);
            s -= h[a.back()] * 2ll;
            b.push_back(a.back());
            a.pop_back();
        } else {
            int r = rand() % b.size();
            swap(b[r], b[b.size() - 1]);
            s += h[b.back()] * 2ll;
            a.push_back(b.back());
            b.pop_back();
        }
    }
    for(int x : b) res[x] = '-';
    fout << res;
    return 0;
}