Cod sursa(job #2152593)

Utilizator Eduard24Eduard Scaueru Eduard24 Data 5 martie 2018 18:01:29
Problema Ghiozdan Scor 12
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.28 kb
#include <fstream>

using namespace std;
ifstream fin("ghiozdan.in");
ofstream fout("ghiozdan.out");

int n,G,c,x[1000004],i,j,sol,nr,v[1000005],nrs,s,aux,gr[1000005];

int main()
{
    fin>>n>>G;
    nr=0;
    nrs=0;
    sol=0;
    x[0]=1;
    for(i=1;i<=n;i++)
    {
        fin>>c;
        v[i]=c;
        for(j=G-c;j>=0;j--)
        {
            if(x[j]>0 && x[j+c]==0)
            {
                x[j+c]=c;
                if(j+c>sol)
                {
                    sol=j+c;
                }
            }
        }
    }
    for(i=1;i<=n-1;i++)
    {
        for(j=i+1;j<=n;j++)
        {
            if(v[i]<v[j])
            {
                aux=v[i];
                v[i]=v[j];
                v[j]=aux;
            }
        }
    }
    for(i=1;i<=n;i++)
    {
        if(gr[v[i]]==0)
        {
            gr[v[i]]=v[i];
        }
        j=G-v[i];
        while(j>v[i])
        {
            if(gr[j]>0 && gr[j+v[i]]==0)
            {
                gr[j+v[i]]=v[i];
            }
            j=j-1;
        }
    }
    nrs=0;
    i=sol;
    while(i>0)
    {
        nrs++;
        i=i-gr[i];
    }
    fout<<sol<<" "<<nrs<<"\n";
    for(i=1;i<=nrs;i++)
    {
        fout<<v[i]<<"\n";
    }
    return 0;
}