Pagini recente » Cod sursa (job #1119880) | Cod sursa (job #301090) | Cod sursa (job #1743628) | Cod sursa (job #2446867) | Cod sursa (job #1408985)
#include<fstream>
#include<vector>
#include<iostream>
using namespace std;
typedef int var;
ifstream fin("zebughil.in");
ofstream fout("zebughil.out");
var G, N;
var W[20];
bool knapsack(string conf) {
var totalw = 0;
//cout << "Apel knapsack : " << conf << '\n';
for(var i=0; i<conf.size(); i++) {
char c = conf[i];
totalw += W[c - '0'];
}
return totalw <= G;
}
bool solve(var n, string conf) {
var no_obj = conf.size();
//cout << conf << '\n';
if(n == 1) {
return knapsack(conf);
}
for(var c = 1; c < (1 << no_obj); c++) {
string str1, str2;
for(var i=0; i<no_obj; i++) {
if(c & (1 << i)) {
str1 += conf[i];
} else {
str2 += conf[i];
}
}
bool r1 = solve(n / 2, str1);
bool r2 = solve(n - (n / 2), str2);
if(r1 & r2)
return 1;
}
return 0;
}
int main() {
for(var t=1; t<=3; t++) {
fin>>N>>G;
for(var i=1; i<=N; i++) {
fin>>W[i];
}
string full;
for(var i=1; i<=N; i++) {
full += (i + '0');
}
//cout << full << '\n';
var rez;
for(rez=1; !solve(rez, full); rez++);
fout<<rez<<'\n';
}
return 0;
}