Pagini recente » Cod sursa (job #2504029) | Cod sursa (job #927120) | Cod sursa (job #2639185) | Cod sursa (job #1939603) | Cod sursa (job #2577469)
#include <fstream>
std :: ifstream fin ("rucsac.in");
std :: ofstream fout("rucsac.out");
int N, G;
int QMAX;
struct object {
int weight;
int quality;
};
object* knapsack;
short* included;
void solution() {
object temp;
temp.weight = 0;
temp.quality = 0;
for (int i = 0;i < N;i ++) {
if (included[i]) {
temp.weight += knapsack[i].weight;
temp.quality += knapsack[i].quality;
}
}
// isSol
if (temp.weight <= G) {
if (temp.quality > QMAX)
QMAX = temp.quality;
}
}
void backtracking(int k) {
if (k == N) {
solution();
} else {
for (int i = 0;i < 2;i ++) {
included[k] = i;
backtracking(k + 1);
}
}
}
int main() {
fin >> N >> G;
knapsack = new object[N];
included = new short[N];
for (int i = 0;i < N;i ++) {
fin >> knapsack[i].weight >> knapsack[i].quality;
}
backtracking(0);
// fout << N << ' ' << G << std :: endl;
// for (int i = 0;i < N;i ++) {
// fout << knapsack[i].weight << ' ' << knapsack[i].quality << std :: endl;
// }
fout << QMAX << std :: endl;
return 0;
}