Pagini recente » Cod sursa (job #1506198) | Cod sursa (job #2608373) | Cod sursa (job #2554176) | Cod sursa (job #2602184) | Cod sursa (job #695335)
Cod sursa(job #695335)
#include<stdio.h>
long n,g,i,j,gmax,gmaxn,a[20001],viz[75001],gr[75001],poz[75000];
int main()
{
freopen("ghiozdan.in","r",stdin);
freopen("ghiozdan.out","w",stdout);
scanf("%ld %ld",&n,&g);
for(i=1;i<=n;i++)
{
scanf("%ld",&a[i]);
for(j=0;j<=gmax;j++) viz[j]=0;
if(gr[a[i]]>1||gr[a[i]]==0)
{
gr[a[i]]=1;
poz[a[i]]=-1;
viz[a[i]]=1;
}
gmaxn=gmax;
for(j=0;j<=gmaxn;j++)
{
if(viz[j]==0 && j+a[i]<=g && gr[j]>0) {
viz[j]=1;
if(gr[j+a[i]]>gr[j]+1 || gr[j+a[i]]==0)
{
gr[j+a[i]]=gr[j]+1;
poz[j+a[i]]=j;
viz[j+a[i]]=1;
if(j+a[i]>gmax) gmax=j+a[i];
}
}
}
if(a[i]>gmax) gmax=a[i];
}
for(i=g;i>=0;i--)
if(gr[i]>0)
{
printf("%ld %ld\n",i,gr[i]);
while(poz[i]!=-1)
{
printf("%ld\n",a[i]);
i=poz[i];
}
break;
}
return 0;
}