Pagini recente » Cod sursa (job #2793476) | Cod sursa (job #1663092) | Cod sursa (job #476636) | Cod sursa (job #754766) | Cod sursa (job #1263552)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("zebughil.in");
ofstream g ("zebughil.out");
const int NMAX = 17 + 1;
int n, gmax, configmax;
int sol[1 << NMAX], greutate[NMAX];
void citeste() {
f >> n >> gmax;
for (int i = 1; i <= n; i++) f >> greutate[i];
}
void rezolva() {
configmax = (1 << n);
for (int configuratie = 0; configuratie < configmax; configuratie++) sol[configuratie] = -1;
sol[0] = gmax;
for (int i = 1; i <= n; i++) {
for (int configuratie = 0; configuratie < configmax; configuratie++) {
if (sol[configuratie] != -1) sol[configuratie] = gmax;
for (int j = 1; j <= n; j++)
if (configuratie && (1 << (j - 1)) && sol[configuratie^(1 << (j - 1))] - greutate[j] > sol[configuratie])
sol[configuratie] = sol[configuratie ^ (1 << (j - 1))] - greutate[j];
}
if (sol[configmax - 1] != -1) {
g << i << '\n';
break;
}
}
}
int main() {
int t = 3;
while (t--) {
citeste();
rezolva();
}
return 0;
}