Pagini recente » Cod sursa (job #1058403) | Cod sursa (job #1040946) | Profil UAIC_Mancas_Guraliuc_Mihaila | Cod sursa (job #247067) | Cod sursa (job #297918)
Cod sursa(job #297918)
#include <cstdio>
#define Gmax 75001
#define Nmax 20001
#define Inf 1<<17
int n,g,v[Nmax],s[Gmax],sol[Gmax];
int maxim(int a, int b)
{
if (a>b) return a;
return b;
}
void read_data()
{
freopen("ghiozdan.in","r",stdin);
freopen("ghiozdan.out","w",stdout);
scanf("%d %d", &n, &g);
for (int i=1;i<=n;++i)
scanf("%d", &v[i]);
for (int i=1;i<=g;++i)
s[i]=Inf;
}
void solve()
{
int lmax=0;
for (int i=1;i<=n && s[g]==Inf;++i)
{
lmax+=v[i];
lmax=maxim(lmax,g);
for (int 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];
}
}
while(s[g]==Inf) g--;
printf("%d %d\n", g,s[g]);
while(g)
{
printf("%d\n", sol[g]);
g-=sol[g];
}
}
int main()
{
read_data();
solve();
return 0;
}