Pagini recente » Cod sursa (job #480275) | Cod sursa (job #841976) | Cod sursa (job #2787011) | Cod sursa (job #2908107) | Cod sursa (job #1140452)
#include <fstream>
using namespace std;
ifstream in("ghiozdan.in"); ofstream out("ghiozdan.out");
int N,i,j,umax,u,lv,ln,G,a[20001],x[75002],t[75002];
int main()
{ in>>N>>G;
ln=1; x[0]=1; umax=0;
for(i=1; i<=N; i++)
{ in>>a[i];
for(j=umax;j>=0;j--)
if(x[j])
{ u=j+a[i];
if(u<=G)
{ if(x[u]==0)
{ x[u]=x[j]+1, t[u]=i;
if(umax<u) umax=u;
}
/*
if(umax<u) umax=u, x[u]=x[j]+1, t[u]=i;
else if(umax==u) {if(x[u]>x[j]+1) x[u]=x[j]+1, t[u]=i;}
else {if(x[u]>x[j]+1) x[u]=x[j]+1, t[u]=i;}
*/
}
}
}
out<<umax<<' '<<x[umax]-1<<'\n';
while(umax)
{ out<<a[t[umax]]<<'\n';
umax-=a[t[umax]];
}
out.close(); return 0;
}