Pagini recente » Cod sursa (job #141498) | Cod sursa (job #561376) | Cod sursa (job #407066) | Cod sursa (job #317829) | Cod sursa (job #1556833)
#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 = 0; m < (1<<n); m++) {
d[m] = n+1;
long long sum = 0;
for (int i = 0; i < n; i++) {
if (((1<<i) & m)) {
sum += 1LL * z[i];
}
}
if (sum <= 1LL * g) {
d[m] = 1;
continue;
}
for (int m1 = m; m1 > 0; m1 = (m1 - 1) & m) {
d[m] = min(d[m], d[m1] + d[m1 ^ m]);
}
}
printf("%d\n", d[(1<<n)-1]);
}
return 0;
}