Cod sursa(job #2361707)

Utilizator AndreosAndrei Otetea Andreos Data 2 martie 2019 18:04:52
Problema Ghiozdan Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <fstream>
#define GMAX 75005
using namespace std;
ifstream fin("ghiozdan.in");
ofstream fout("ghiozdan.out");
int f[GMAX],v[GMAX],sol[GMAX];
int main()
{
    int N,G,i,j,k,x;
    fin>>N>>G;
    for(i=1;i<=N;++i)
    {
        fin>>x;
        f[x]++;
    }
    v[0]=1;
    for(i=200;i>=1;--i)
    {
        if(f[i]!=0)
        {
            for(j=G-i;j>=0;--j)
            {
                if(v[j]!=0)
                {
                    for(k=1;k<=f[i] && j+k*i<=G && v[j+k*i]==0;++k)
                    {
                        v[j+i*k]=v[j]+k;
                        sol[j+k*i]=i;
                    }
                }
            }
        }
    }
    i=G;
    while(v[i]==0)
        i--;
    fout<<i<<" "<<v[i]-1<<"\n";
    while(i>0)
    {
        fout<<sol[i]<<"\n";
        i=i-sol[i];
    }
    return 0;
}