Cod sursa(job #2577469)

Utilizator michael_blazemihai mihai michael_blaze Data 9 martie 2020 13:59:32
Problema Problema rucsacului Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.1 kb
#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;
}