Cod sursa(job #3125005)

Utilizator unomMirel Costel unom Data 1 mai 2023 12:49:21
Problema Semne Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.27 kb
#include <bits/stdc++.h>

using namespace std;

ifstream in("semne.in");
ofstream out("semne.out");
int n;
int v[50005];
int ans[50005];
long long sum, s;
vector<int> add, sub;

int main()
{
    in>>n>>s;

    for(int i = 1; i<=n; i++)
    {
        in>>v[i];
        sum += v[i];
        add.push_back(i);
    }

    while(sum != s)
    {
        if(sum > s)
        {
            if(add.empty())
            {
                return 0;
            }

            int poz = rand() % add.size();
            sum -= 2 * v[add[poz]];
            sub.push_back(add[poz]);

            swap(add[poz], add[add.size()-1]);
            add.pop_back();
        }
        else
        {
            if(sub.empty())
            {
                return 0;
            }

            int poz = rand() % sub.size();
            sum += 2 * v[sub[poz]];
            add.push_back(sub[poz]);

            swap(sub[poz], sub[sub.size()-1]);
            sub.pop_back();
        }
    }

    for(int i = 0; i<add.size(); i++)
    {
        ans[add[i]] = 1;
    }

    for(int i = 1; i<=n; i++)
    {
        if(ans[i] == 1)
        {
            out<<"+";
        }
        else
        {
            out<<"-";
        }
    }

    return 0;
}