Pagini recente » Cod sursa (job #2865926) | Cod sursa (job #1342573) | Cod sursa (job #1987708) | Cod sursa (job #3253639) | Cod sursa (job #393099)
Cod sursa(job #393099)
#include<stdio.h>
const char in[]="ghiozdan.in";
const char out[]="ghiozdan.out";
const int Gmax=75002;
int f[205], v[Gmax], n, w, max, l[Gmax];
int main()
{int i, j, k, x, y;
freopen(in,"r",stdin);
freopen(out,"w",stdout);
scanf("%d %d", &n, &w);
for(i=1;i<=n;++i){
scanf("%d", &f[0]);
++f[f[0]];
if(f[0]>max)max=f[0];
}
f[0]=0;
for(i=max;i>=1;--i)
if(f[i])
for(k=w-i;k>=0;--k)
if(v[k] || !k)
for(j=1;j<=f[i];++j)
if(k+i*j<=w && !v[k+i*j])
{
v[k+i*j]=v[k+i*(j-1)]+1;
l[k+i*j]=k+i*(j-1);
}
else break;
for(i=w;!v[i];--i);
printf("%d %d\n", i, v[i]);
//for(j=i,k=v[i];k;--j)
//if(v[j]==k)printf("%d\n",l[j]),--k;
x=i;
y=l[x];
while(v[i]){
printf("%d\n",x-y);
v[i]--;
x=y;
y=l[y];
}
return 0;
}