Pagini recente » Cod sursa (job #510979) | Cod sursa (job #1157791) | Cod sursa (job #146444) | Cod sursa (job #2290046) | Cod sursa (job #1279097)
#include<cstdio>
using namespace std;
FILE *in = fopen("ghiozdan.in","r");
FILE *out = fopen("ghiozdan.out","w");
const int Emax = 201, Gmax = 75001;
int fr[Emax], Nrg[Gmax], Ug[Gmax];
int main (){
int G,n,nr;
fscanf(in,"%d%d",&n,&G);
for(int i = 1 ; i <= n ; i++) fscanf(in,"%d",&nr), fr[nr]++;
Nrg[0]=1;
int maxim = 0;
for(int i = 200 ; i >= 1 ; i--){
if(fr[i]){
for(int j = G - i ; j >= 0 ; j--){
if(Nrg[j]){
for(int k = 1 ; k <= fr[i] && j + k*i <= G && !Nrg[j + k*i] ; k++){
Nrg[j + k*i]=Nrg[j] + k;
Ug[j + k*i]=i;
maxim=maxim>j+k*i?maxim:j+k*i;
}
}
}
}
}
fprintf(out,"%d %d\n",maxim,Nrg[maxim]-1);
for(int i = maxim ; i>0 ; i-=Ug[i]) fprintf(out,"%d\n",Ug[i]);
return 0;
}