Pagini recente » Cod sursa (job #3169844) | Cod sursa (job #2350216) | Cod sursa (job #1062576) | Cod sursa (job #2912977) | Cod sursa (job #480188)
Cod sursa(job #480188)
#include<stdio.h>
#define minim(a,b) (a<b ? a : b)
#define maxim(a,b) (a>b ? a : b)
int n,g,f[205],vmax,gmax;
int sol[80006],rec[80005];
int main ()
{
int i,j,t,val,lim;
freopen("ghiozdan.in","r",stdin);
freopen("ghiozdan.out","w",stdout);
scanf("%d%d",&n,&g);
for(i=1;i<=n;i++)
{
scanf("%d",&val);
f[val]++;
vmax=maxim(vmax,val);
}
sol[0]=1;
for(i=vmax;i>=1;i--)
{
if(!f[i])
continue;
for(j=gmax;j>=0;j--)
if(sol[j])
{
lim=minim(g,j+i*f[i]);
for(t=j+i;t<=lim && !sol[t];t+=i)
{
gmax=maxim(gmax,t);
sol[t]=sol[t-i]+1;
rec[t]=i;
}
}
}
printf("%d %d\n",gmax,--sol[gmax]);
while(gmax)
{
printf("%d\n",rec[gmax]);
gmax-=rec[gmax];
}
return 0;
}