Pagini recente » Cod sursa (job #2662139) | Cod sursa (job #861119) | Cod sursa (job #190563) | Cod sursa (job #2717786) | Cod sursa (job #1772256)
#include<cstdio>
#include<algorithm>
const int GMAX=75001,NMAX=20001;
int d[GMAX],v[NMAX];
int main()
{
FILE *in=fopen("ghiozdan.in","r");
int g,n,max=0;
fscanf(in,"%d %d ",&n,&g);
for(int i=1;i<=n;i++)
{
int x=0;
fscanf(in,"%d ",&x);
v[i]=x;
//d[x]=1;
for(int j=g-x;j>=0;j--)
{
if(d[j]!=0 && d[j]!=NMAX)
{
d[j+x]=d[j+x]==0?NMAX:d[j+x];
d[j+x]=std::min(d[j+x],d[j]+1);
max=std::max(max,j+x);
}
}
d[x]=1;
}
fclose(in);
FILE *out=fopen("ghiozdan.out","w");
fprintf(out,"%d %d\n",max,d[max]);
int c=max;
while(c!=0)
{
for(int i=1;i<=n;i++)
if(v[i]!=-1 && c-v[i]>=0 && d[c-v[i]]==d[c]-1)
{
fprintf(out,"%d\n",v[i]);
c-=v[i],v[i]=-1;
break;
}
}
fclose(out);
return 0;
}