Pagini recente » Cod sursa (job #2616702) | Cod sursa (job #2867459) | Cod sursa (job #1541878) | Cod sursa (job #1264224) | Cod sursa (job #2197839)
#include <cstdio>
#include <algorithm>
using namespace std;
pair<int, int>dp[(1 << 17) + 5];
int a[20];
int main() {
freopen("zebughil.in", "r", stdin);
freopen("zebughil.out", "w", stdout);
for (int t = 0; t < 3; ++t) {
int n, g;
scanf("%d%d", &n, &g);
for (int i = 1; i <= n; ++i)
scanf("%d", &a[i]);
int ns = (1 << n);
dp[0] = {0, g};
for (int i = 1; i < ns; ++i) {
dp[i] = {20, 0};
for (int j = 0; j < n; ++j)
if (i & (1 << j)) {
pair<int, int>aux = dp[i ^ (1 << j)];
if (aux.second + a[j + 1] <= g)
aux.second += a[j + 1];
else {
aux.first++;
aux.second = min(aux.second, a[j + 1]);
}
if (aux < dp[i])
dp[i] = aux;
}
}
printf("%d\n", dp[ns - 1].first);
}
return 0;
}