Pagini recente » Cod sursa (job #647128) | Cod sursa (job #739888) | Cod sursa (job #2391909) | Cod sursa (job #1727870) | Cod sursa (job #18679)
Cod sursa(job #18679)
#include <stdio.h>
#define summax 75210
#define vmax 20010
int v[vmax], s[summax], n, g, gmax, nmin, pos, used[201];
int main()
{
freopen("ghiozdan.in","r",stdin);
freopen("ghiozdan.out","w",stdout);
int i, j, temp;
scanf("%d%d", &n, &g);
for(i = 1; i <= n; ++i)
{
scanf("%d", &v[i]);
++used[v[i]];
}
for(i = 1; i <= n; ++i)
{
for(j = g - v[i]; j > 0; --j)
{
if(s[j] && (!s[j + v[i]] || s[j + v[i]] >= s[j] + 1))
{
s[j + v[i]] = s[j] + 1;
}
}
s[v[i]] = 1;
}
for(i = 1; i <= g; ++i)
{
if(s[i])
{
if(i > gmax || i == gmax && s[i] >= nmin)
{
gmax = i;
nmin = s[i];
pos = i;
}
}
}
printf("%d %d\n", gmax, nmin);
s[0] = -1;
for(temp = gmax, j = nmin, i = gmax - 1; i >= 0; --i)
{
if(s[i] && s[i] < j && used[temp - i])
{
printf("%d\n", temp - i);
--j;
--used[temp - i];
temp = i;
}
}
return 0;
}