Pagini recente » Cod sursa (job #1219251) | Cod sursa (job #1172636) | Cod sursa (job #472688) | Cod sursa (job #2882792) | Cod sursa (job #374422)
Cod sursa(job #374422)
#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 init ()
{
int i, k=1<<n;
for (i=1; i <= k; ++i)
s [i]=inf;
}
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 ;
}
if (k & (1<< b))
{
back (k, sum, b+1);
if (sum+v[b+1]<= g)
back (k^(1 << b),sum+v[b+1],b+1);
}
else
back (k, sum, b+1);
}
void zeb ()
{
int k=1<<n;
s[1]=inf;
for (w=1; w < k; ++w, s [w]=inf)
back (w, 0, 0);
}
int main ()
{
freopen ("zebughil.in", "r", stdin);
freopen ("zebughil.out", "w", stdout);
printf("%d\n",10^2);
for (int i=1; i <= 3; ++i)
{
scan ();
zeb ();
printf("%d\n",s[(1<<n)-1]);
}
return 0;
}