Pagini recente » Cod sursa (job #2582846) | Cod sursa (job #1560157) | Cod sursa (job #2575089) | Cod sursa (job #1404645) | Cod sursa (job #2031019)
#include <fstream>
using namespace std;
ifstream fin("ghiozdan.in");
ofstream fout("ghiozdan.out");
short int a[75007];
int ct[205];
int n,g;
short int mini ( short int c,short int b )
{
if(c>b) return b;
else return c;
}
int main()
{ fin>>n>>g;
int i,x,j,z,sm;
short int l;
for(i=1;i<=n;++i)
{ fin>>x;
ct[x]++;
}
for(j=0;j<=g;++j)
a[j]=-1;
a[0]=0;
for(i=200;i>=1;--i)
if(ct[i])
for(j=g;j>=0;--j)
if(a[j]!=-1)
{ z=j+i; l=1; a[j]=a[j];
while(z<=g && l<=ct[i] && a[z]==-1)
{ if(a[z]==-1)
a[z]=a[j]+l;
++l;
z+=i;
}
}
for(i=g;i>=0;--i)
if(a[i]!=-1)
break;
fout<<i<<" "<<a[i]<<"\n";
sm=i;
while(sm)
for(i=1;i<=sm;++i)
if(ct[i] && a[sm-i]==a[sm]-1)
{ fout<<i<<"\n";
sm-=i;
break;
}
return 0;
}