Pagini recente » Cod sursa (job #1102712) | Cod sursa (job #2177806) | Cod sursa (job #1971727) | Cod sursa (job #2269162) | Cod sursa (job #2030788)
#include <fstream>
using namespace std;
ifstream fin("ghiozdan.in");
ofstream fout("ghiozdan.out");
short int a[205][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;
short int l;
for(i=1;i<=n;++i)
{ fin>>x;
ct[x]++;
}
for(i=0;i<=200;++i)
for(j=0;j<=g;++j)
a[i][j]=-1;
a[0][0]=0;
for(i=1;i<=200;++i)
for(j=g;j>=0;--j)
if(a[i-1][j]!=-1)
{ z=j+i; l=1; a[i][j]=a[i-1][j];
if(ct[i])
while(z<=g && l<=ct[i])
{ if(a[i][z]==-1)
a[i][z]=a[i][j]+l;
else
a[i][z]=mini(a[i][j]+l,a[i][z]);
++l;
z+=i;
}
}
for(i=g;i>=0;--i)
if(a[200][i]!=-1)
break;
fout<<i<<" "<<a[200][i];
return 0;
}