Pagini recente » Cod sursa (job #258622) | Cod sursa (job #1735801) | Cod sursa (job #2396080) | Cod sursa (job #346236) | Cod sursa (job #297910)
Cod sursa(job #297910)
#include <cstdio>
#include <algorithm>
using namespace std;
#define Nmax 20011
#define Lmax 75011
#define Inf 1<<!0
int v[Nmax],n,g,s[Lmax],sol[Lmax];
int max(int a, int b)
{
return a>b?a:b;
}
void read_data()
{
int i,j;
freopen("ghiozdan.in","r",stdin);
freopen("ghiozdan.out","w",stdout);
scanf("%d %d", &n,&g);
for (i=1;i<=n;++i)
scanf("%d", &v[i]);
//sort(v+1,v+n+1);
for (i=1;i<=g;++i)
s[i]=1<<10;
int lmax=0,ok;
for (i=1;i<=n && s[g]==1<<10;++i)
{
lmax+=v[i];
lmax=max(lmax,g);
for (j=lmax;j>=v[i];--j)
if (s[j]>s[j-v[i]]+1)
{
s[j]=s[j-v[i]]+1;
sol[j]=v[i];
}
}
ok=0;
i=g;
while(!ok)
{
if (s[i]==Inf) --i;
else
ok=1;
}
printf("%d %d\n", i-1,s[i-1]-1);
g=i-1;
while(g)
{
printf("%d\n", sol[g]);
g-=sol[g];
}
}
int main()
{
read_data();
//solve();
//write_data();
return 0;
}