Pagini recente » Cod sursa (job #636835) | Cod sursa (job #285265) | Cod sursa (job #274151) | Cod sursa (job #940175) | Cod sursa (job #2361315)
#include <fstream>
using namespace std;
ifstream fin("ghiozdan.in");
ofstream fout("ghiozdan.out");
int v[75005],t[75005],a[75005],n,x,G,m,i,j,k,last;
int f[20005],INF=75005;
int main()
{
fin>>n>>G;
for(i=1;i<=n;i++)
{
fin>>x;
t[x]++;
f[i]=x;
}
v[0]=1;/*
for(i=100;i>=1;i--)
{
for(j=1;j<=fr[i];j++)
{
}
}*/
/*
for(i=1;i<=n;i++)
{
for(j=last;j>=0;j--)
{
if(j+f[i]>G)
continue;
if(v[j]!=INF)
{
if(v[j+f[i]]>v[j]+1)
{
v[j+f[i]]=v[j]+1;
}
if(j+f[i]>last)
last=j+f[i];
}
}
}
for(i=G;i>=0;i--)
if(v[i]!=INF)
{
fout<<i<<" "<<v[i]<<"\n";
break;
}
*/
for(i=200;i>=1;i--)
if(t[i])
{
for(j=G-i;j>=0;j--)
if(v[j])
{
for(int k=1;k<=t[i] && j+k*i<=G && !v[j+k*i];k++)
{
v[j+i*k]=v[j]+k;
a[j+k*i]=i;
}
}
}
for(j=G;v[j]==0;j--);
fout<<j<<" "<<v[j]-1<<endl;
for(;j!=0;j=j-a[j])
{
fout<<a[j]<<"\n";
}
return 0;
}