Pagini recente » Cod sursa (job #768242) | Cod sursa (job #1361107) | Cod sursa (job #3254988) | Cod sursa (job #1832710) | Cod sursa (job #372701)
Cod sursa(job #372701)
#include <stdio.h>
#include <limits.h>
#define pmax (1<<17) + 5
#define inf INT_MAX - 5
int n, g, w, v [25], s [pmax];
void scan ()
{
int i;
scanf ("%d%d", &n, &g);
for (i=1; i <= n; ++i)
scanf ("%d", &v [i]);
}
void back (int k, int sum, int b)
{
if (b == n)
{
if (s [w] > s [k]+1)
s [w]=s [k]+1;
return ;
}
back (k, sum, b+1);
if ((k & (1 << b)) && (sum + v [b+1] <= g))
back (k ^ (1 << b), sum + v [b+1], b+1);
}
void zeb ()
{
int k=1<<n;
s [1]=inf;
for (w=1; w < k; ++w, s [w]=inf)
back (w, 0, 0); //fprintf(stderr, "%d\n", s [w]); }
}
int main ()
{
freopen ("zebughil.in", "r", stdin);
freopen ("zebughil.out", "w", stdout);
for (int i=1; i <= 3; ++i)
{
scan ();
zeb ();
printf ("%d\n", s [(1 << n)-1]);
}
return 0;
}