Pagini recente » Cod sursa (job #184269) | Cod sursa (job #570686) | Cod sursa (job #2291865) | Cod sursa (job #324165) | Cod sursa (job #1044581)
#include <fstream>
#include <cstring>
#include <algorithm>
using namespace std;
int main()
{
ifstream cin("zebughil.in");
ofstream cout("zebughil.out");
unsigned N, G;
static unsigned char dp[1 << 17];
static unsigned int sum[1 << 17];
unsigned int z[17];
for (int t = 0;t < 3;t++) {
cin >> N >> G;
for (int i = 0;i < N;i++) {
cin >> z[i];
sum[ (1 << i)] = z[i];
}
for (int i = 1;i < (1 << N);i++) {
sum[i] = sum[i ^ (i & -i)] + sum[i & -i] > G ? G + 1 : sum[i ^ (i & -i)] + sum[i & -i];
if (sum[i] <= G) {
dp[i] = 1;
} else {
dp[i] = static_cast<unsigned int>(N + 1);
for (int j = i & (i - 1);j > 0;j = (j - 1) & i) {
dp[i] = dp[i] < dp[j] + dp[i ^ j] ? dp[i] : dp[j] + dp[i ^ j];
}
}
}
cout << dp[(1 << N) - 1] << "\n";
}
return 0;
}