Pagini recente » Cod sursa (job #571845) | Monitorul de evaluare | Profil eudanip | Cod sursa (job #726040) | Cod sursa (job #1511227)
#include <cstdio>
#include <algorithm>
using std::min;
const int Nmax = 17;
int d[1 << Nmax]; // numarul de camioane pentru submultimea codificata
int c[1 << Nmax]; // greutatea pentru submultimea codificata
int main(void) {
freopen("zebughil.in", "r", stdin);
freopen("zebughil.out", "w", stdout);
int T, n, g;
register int i, j;
for (T = 0; T < 3; T++) {
scanf("%d%d", &n, &g);
for (i = 0; i < n; i++) {
scanf("%d", &c[1 << i]);
d[1 << i] = 1;
}
for (i = 3; i < (1 << n); i++) {
c[i] = c[i & -i] + c[(i - 1) & i];
if (c[i] <= g) {
d[i] = 1;
} else {
d[i] = n;
for (j = (i - 1) & i; j > (i ^ j); j = (j - 1) & i) {
d[i] = min(d[i], d[i ^ j] + d[j]);
}
}
}
printf("%d\n", d[(1 << n) - 1]);
}
fclose(stdin);
fclose(stdout);
return 0;
}