Pagini recente » Cod sursa (job #2938168) | Cod sursa (job #656891) | Istoria paginii runda/con1/clasament | Cod sursa (job #1581545) | Cod sursa (job #202911)
Cod sursa(job #202911)
#include<stdio.h>
#define INF 31313
int n,g;
unsigned short v[80000],nr[300],a[22222],t[80000];
int main(){
int x=0,i,j,k;
freopen("ghiozdan.in","r",stdin);
freopen("ghiozdan.out","w",stdout);
scanf("%d%d",&n,&g);
for(i=0;i<n;i++)
scanf("%d",&k),nr[k]++;
n=0;
for(i=250;i>0;i--)
for(j=0;j<nr[i];j++) a[n++]=i;
for(i=1;i<=g;++i) v[i]=INF;
v[0]=0;
for(i=0;i<n;i++){
k=a[i];
x+=k;
if(x>g)
x=g;
for(j=x;j>=k;j--)
if(v[j-k]+1<v[j])
v[j]=v[j-k]+1,t[j]=k;
if(v[g]<INF)break;
}
while(v[g]==INF) g--;
printf("%d %d\n",g,v[g]);
while(g) printf("%d\n",t[g]),g-=t[g];
fclose(stdin);
fclose(stdout);
return 0;
}