Cod sursa(job #993802)

Utilizator geniucosOncescu Costin geniucos Data 4 septembrie 2013 14:40:52
Problema Ghiozdan Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include<fstream>
#include<algorithm>
using namespace std;
int val,maxi,n,gm,i,j,k,nr,b[20013],cate[75013],v[75013],pot[75013],ap[213];
int main()
{
ifstream f("ghiozdan.in");
ofstream g("ghiozdan.out");
f>>n>>gm;
for(i=1;i<=n;i++)
{
    f>>val;
    ap[val]++;
}
pot[0]=1;
for(i=200;i>=1;i--)
    if(ap[i])
    {
        for(j=gm-i;j>=0;j--)
            if(pot[j])
            {
                for(k=1;k<=ap[i]&&k*i+j<=gm;k++)
                    if(pot[j+k*i]==0)
                    {
                        pot[j+k*i]=1;
                        cate[j+k*i]=k;
                        v[j+k*i]=i;
                    }
            }
    }
for(i=gm;i>=1;i--)
    if(pot[i]) break;
maxi=i;
g<<maxi<<" ";
while(maxi)
{
    for(i=1;i<=cate[maxi];i++)
    {
        nr++;
        b[nr]=v[maxi];
    }
    maxi-=v[maxi]*cate[maxi];
}
g<<nr<<'\n';
for(i=1;i<=nr;i++)
	g<<b[i]<<'\n';
f.close();
g.close();
return 0;
}