Pagini recente » Cod sursa (job #3249530) | Cod sursa (job #3284567) | Cod sursa (job #3282803) | Profil CasianD | Cod sursa (job #3246720)
#include <fstream>
using namespace std;
const int Gmax=75005,NRGmax=205;
int dp[Gmax],frg[NRGmax],sol[Gmax];
int main()
{
ifstream fin("ghiozdan.in");
ofstream fout("ghiozdan.out");
int n,g,maxg=0,maxs=0;
fin>>n>>g;
for(int i=1; i<=n; ++i){
int a;
fin>>a;
maxg=max(maxg,a);
frg[a]++;
}
dp[0]=1;
for (int i=maxg; i>=1; --i) {
if (frg[i]>0) {
for (int j=g-i; j>=0; --j) {
if(dp[j]>0) {
for (int k=1; k<=frg[i] && j+k*i<=g && dp[j+k*i]==0; k++) {
dp[j+k*i]=dp[j+(k-1)*i]+1;
sol[j+k*i]=i;
maxs=max(maxs,j+k*i);
}
}
}
}
}
fout<<maxs<<' '<<dp[maxs]-1<<endl;
for (int i=maxs; i>0; i-=sol[i]) {
fout<<sol[i]<<endl;
}
return 0;
}