Pagini recente » Cod sursa (job #1693211) | Cod sursa (job #2271865) | Cod sursa (job #545393) | Cod sursa (job #2305240) | Cod sursa (job #1658407)
#include <fstream>
#include <vector>
#include <cstring>
#include <algorithm>
using namespace std;
ifstream fin("zebughil.in");
ofstream fout("zebughil.out");
int dp[1 << 17], v[17];
int main() {
for (int test = 1; test <= 3; ++test) {
int n, gMax;
fin >> n >> gMax;
for (int i = 0; i < n; ++i)
fin >> v[i];
for (int config = 1; config < (1 << n); ++config) {
long long gCurr = 0;
for (int i = 0; i < n; ++i)
if ((config >> i) & 1)
gCurr += v[i];
if (gCurr <= gMax) {
dp[config] = 1;
continue;
}
dp[config] = 18;
for (int oldConfig = (config & (config - 1)); oldConfig > 0; oldConfig = ((oldConfig - 1) & config)) {
if (dp[config] > dp[oldConfig] + dp[config ^ oldConfig])
dp[config] = dp[oldConfig] + dp[config ^ oldConfig];
}
}
fout << dp[(1 << n) - 1] << '\n';
}
return 0;
}
//Trust me, I'm the Doctor!