Cod sursa(job #2418204)

Utilizator TheNextGenerationAyy LMAO TheNextGeneration Data 4 mai 2019 11:09:18
Problema Semne Scor 65
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <bits/stdc++.h>

using namespace std;
ifstream in("semne.in");
ofstream out("semne.out");
const int N = 50005;
int p[N],m[N],v[N],nrp,nrm;
bool type[N];
int main()
{
    srand(time(0));
    int n,s,t=0;
    in >> n >> s;
    for (int i = 1; i<=n; i++)
    {
        in >> v[i];
        t+=v[i];
        p[++nrp] = i;
        type[i] = 1;
    }
    while (t!=s)
    {
        if (t>s)
        {
            int k = rand()%nrp+1;
            t-=2*v[p[k]];
            type[p[k]] = 0;
            m[++nrm] = p[k];
            p[k] = p[nrp--];
        }
        else
        {
            int k = rand()%nrm+1;
            t+=2*v[m[k]];
            type[m[k]] = 1;
            p[++nrp] = m[k];
            m[k] = m[nrm--];
        }
    }
    for (int i = 1; i<=n; i++)
        if (type[i])
            out << "+";
        else
            out << "-";
}