Cod sursa(job #2922375)

Utilizator Theo20067Cismaru Theodor-Alexe Theo20067 Data 8 septembrie 2022 09:17:17
Problema Semne Scor 5
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <fstream>
using namespace std;
ifstream fin ("semne.in");
ofstream fout("semne.out");
struct elem
{
    int nr,poz;
}C[50001];
int n,s,i,V[50001],st,dr,nr,suma,F[50001];
long long S[50001];
int main()
{
    fin>>n>>s;
    for(i=1;i<=n;i++)
    {
        fin>>V[i];
        S[i]=V[i]+S[i-1];
    }
    nr=(S[n]-s)/2;
    st=1;
    dr=0;
    suma=0;
    for(i=1;V[i]<=nr;i++)
    {
        if(suma+V[i]<=nr)
        {
            C[++dr].nr=V[i];
            C[dr].poz=i;
            suma=suma+V[i];
            if(suma==nr)
                break;
        }
        else
        {
            while(suma>nr&&st<=dr)
            {
                suma=suma-C[st].nr;
                st++;
            }
            if(suma==nr)
                break;
        }
    }
    for(i=st;i<=dr;i++)
        F[C[i].poz]=1;
    for(i=1;i<=n;i++)
    {
        if(F[i]==0)
            fout<<"+";
        else
            fout<<"-";
    }
    return 0;
}