Pagini recente » Cod sursa (job #923512) | Cod sursa (job #1489989) | Cod sursa (job #2331880) | Cod sursa (job #2880845) | Cod sursa (job #1556836)
#include <cstdio>
#include <algorithm>
using namespace std;
const int nmax = 17;
int n, g;
int z[nmax];
int d[(1<<nmax)];
int main() {
freopen("zebughil.in", "r", stdin);
freopen("zebughil.out", "w", stdout);
int T = 3;
while(T--) {
scanf("%d %d", &n, &g);
for (int i = 0; i < n; i++) {
scanf("%d", &z[i]);
}
for (int m = 1; m < (1<<n); m++) {
d[m] = n+1;
int sum = 0;
for (int i = 0; i < n && sum <= g; i++) {
if (((1<<i) & m)) {
sum += z[i];
}
}
if (sum <= g) {
d[m] = 1;
continue;
}
for (int m1 = m; m1 > 0; m1 = (m1 - 1) & m) {
if (d[m1] + d[m1 ^ m] < d[m])
d[m] = d[m1] + d[m1 ^ m];
}
}
printf("%d\n", d[(1<<n)-1]);
}
return 0;
}