Pagini recente » Cod sursa (job #84508) | Cod sursa (job #1651319) | Cod sursa (job #1966699) | Cod sursa (job #1906120) | Cod sursa (job #379538)
Cod sursa(job #379538)
#include <stdio.h>
#define NMAX 17
int D[(1<<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;
}