Pagini recente » Cod sursa (job #2962091) | Cod sursa (job #1696866) | Cod sursa (job #738140) | Cod sursa (job #3221008) | Cod sursa (job #1044574)
#include <fstream>
#include <cstring>
#include <algorithm>
using namespace std;
int main()
{
ifstream cin("zebughil.in");
ofstream cout("zebughil.out");
unsigned N, G;
static unsigned int 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] = N + 1;
for (int j = i & (i - 1);j > 0;j = (j - 1) & i) {
dp[i] = min(dp[i],dp[j] + dp[i ^ j]);
}
}
}
cout << dp[(1 << N) - 1] << "\n";
}
return 0;
}