Cod sursa(job #1918061)

Utilizator Mircea_DonciuDonciu Mircea Mircea_Donciu Data 9 martie 2017 14:01:47
Problema Ghiozdan Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <fstream>

using namespace std;
int n,m,i,j,k,x,w[76005],v[205],p[76005];
int main()
{
    ifstream f("ghiozdan.in");
    ofstream g("ghiozdan.out");
    f>>n>>m;
    for(i=1; i<=n; i++)
    {
        f>>x;
        v[x]++;
    }
    w[0]=1;
    for(k=200; k; k--)
    {
        if(v[k])
        {
            for(i=m-k; i>=0; i--)
            {
                if(w[i])
                {
                    for(j=1; j<=v[k]&&i+j*k<=m&&!w[i+j*k]; j++)
                    {
                        w[i+j*k]=w[i]+j;
                        p[i+j*k]=k;
                    }
                }
            }
        }
    }
    for(i=m; i>=1; i--)
    {
        if(w[i])
        {
            g<<i<<' '<<w[i]-1<<'\n';
            while(i)
            {
                g<<p[i]<<'\n';
                i-=p[i];
            }
            break;
        }
    }
    f.close(); g.close();
    return 0;
}