Cod sursa(job #374422)

Utilizator cosmin79Carabet Cosmin Andrei cosmin79 Data 16 decembrie 2009 23:37:14
Problema Zebughil Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#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;
}