Cod sursa(job #379537)

Utilizator ciprianfFarcasanu Alexandru Ciprian ciprianf Data 2 ianuarie 2010 12:27:12
Problema Zebughil Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.62 kb
#include <stdio.h>
#define NMAX 17
int D[NMAX], v[NMAX];
int n, G;
void back(int k,int c1,int c2,int s){
	if(k == n){
		if(D[c1+c2] > D[c1] + 1)
			D[c1+c2] = D[c1] + 1;
		return ;
	}
	back(k+1, c1, c2, s);
	back(k+1, c1+ (1<<k), c2, s);
	if(s + v[k] <= G)
		back(k+1, c1, c2 + (1<<k), s + v[k]);
}
int main(){
	freopen("zebughil.in", "r", stdin);
	freopen("zebughil.out", "w", stdout);
	for(int t = 3; t; --t){
		scanf("%d %d", &n, &G);
		for(int i = 0; i < n; ++i)
			scanf("%d", &v[i]);
		for(int i = 1; i < (1<<n); ++i)
			D[i] = n;
		back(0, 0, 0, 0);
		printf("%d\n", D[(1<<n)-1]);
	}
	return 0;
}