Pagini recente » Cod sursa (job #586548) | Cod sursa (job #172332) | Cod sursa (job #1104448) | Cod sursa (job #2878566) | Cod sursa (job #1823979)
#include <fstream>
#include <utility>
using namespace std;
const int N_MAX = 17;
ifstream fin("zebughil.in");
ofstream fout("zebughil.out");
int N, G;
int a[N_MAX + 3];
pair<int, int> d[(1 << N_MAX) + 5];
void Solve() {
fin >> N >> G;
for (int i = 0; i < N; ++i)
fin >> a[i];
for (int conf = 1; conf < (1 << N); ++conf) {
d[conf] = {N_MAX, 0};
for (int i = 0; i < N; ++i)
if (conf >> i & 1) {
int prv = conf ^ 1 << i;
if (d[prv].second + a[i] <= 0)
d[conf] = min(d[conf], {d[prv].first, d[prv].second + a[i]});
else
d[conf] = min(d[conf], {d[prv].first + 1, -G + a[i]});
}
}
fout << d[(1 << N) - 1].first << "\n";
}
int main() {
for (int i = 0; i < 3; ++i)
Solve();
return 0;
}