Pagini recente » Cod sursa (job #2759114) | Cod sursa (job #1810436) | Cod sursa (job #2720588) | Cod sursa (job #616140) | Cod sursa (job #1856177)
#include <fstream>
#include <utility>
#define x first
#define y second
using namespace std;
const int NMAX = 17;
ifstream f("zebughil.in");
ofstream gt("zebughil.out");
int N, G;
int g[NMAX + 3];
pair<int, int> d[(1 << NMAX) + 4];
void solve() {
f >> N >> G;
for (int i = 0; i < N; ++i)
f >> g[i];
for (int j = 1; j < (1 << N); ++j) {
d[j] = {NMAX, 0};
for (int i = 0; i < N; ++i)
if (j >> i & 1) {
int p = j ^ 1 << i;
if (d[p].y + g[i] <= 0) {
d[j] = min(d[j], {d[p].x, d[p].y + g[i]});
} else {
d[j] = min(d[j], {d[p].x + 1, -G + g[i]});
}
}
}
gt << d[(1 << N) - 1].x << '\n';
}
int main() {
int T = 3;
while (T--) {
solve();
}
return 0;
}