Cod sursa(job #974211)

Utilizator misinozzz zzz misino Data 16 iulie 2013 17:12:18
Problema Ghiozdan Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<fstream>
using namespace std;
ifstream f("ghiozdan.in");
ofstream g("ghiozdan.out");
int x,n,gr,i,j,k,grmax,maxi,viz[75005],nr[220],next1[75005];
int main()
{
    f>>n>>gr;
    for(i=1;i<=n;++i)
    {
        f>>x;
        ++nr[x];
        maxi=max(maxi,x);
    }
    viz[0]=1;
    for(i=maxi;i;--i)
    if(nr[i])
    for(j=gr-i;j>=0;--j)
    if(viz[j])
    for(k=1,x=i;k<=nr[i]&&j+x<=gr&&!viz[j+x];x+=i,++k)
    {
        viz[j+x]=viz[j]+k;
        next1[j+x]=i;
        grmax=max(grmax,j+x);
    }
    g<<grmax<<' '<<viz[grmax]-1<<'\n';
    while(grmax)
    {
        g<<next1[grmax]<<'\n';
        grmax-=next1[grmax];
    }
    return 0;
}