Cod sursa(job #2282437)

Utilizator rares9301Sarmasag Rares rares9301 Data 13 noiembrie 2018 19:11:41
Problema Ghiozdan Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.02 kb

#include<fstream>

using namespace std;

ifstream fin("ghiozdan.in");

ofstream fout("ghiozdan.out");

int n,gmax, a[75005],b[75005],g[202],i,j,pmax,x,xmax,k,l;

int infinit=30000;

int main()

{

    fin>>n>>gmax;

    for(i=1; i<=n; i++)

    {

        fin>>x;

        xmax=max(xmax,x);

        g[x]++;

    }

    for(i=1; i<=gmax; i++)

    {

        a[i]=infinit;

    }

    a[0]=0;

    pmax=0;

    for(i=xmax; i>=1; i--)

    {

        if(g[i]>0)

        {

            for(j=pmax; j>=0; j--)

            {

                l=j;

            for(k=1; k<=g[i] && l+i<=gmax && a[l+i]>a[l]+1; k++)

            {

                a[l+i]=a[l]+1;

                b[l+i]=l;

                if(l+i>pmax)

                {

                    pmax=l+i;

                }

                l=l+i;

            }

        }

    }

    }

fout<<pmax<<" "<<a[pmax]<<"\n";

for(i=pmax; i!=0; i=b[i])

{

    fout<<i-b[i]<<"\n";

}

return 0;

}