Cod sursa(job #1175852)

Utilizator MarianMMorosac George Marian MarianM Data 25 aprilie 2014 00:37:30
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <fstream>
#define DMAX 7//5001
using namespace std;

ifstream fin("rucsac.in");
ofstream fout("rucsac.out");

int n, G;
int w[DMAX], p[DMAX];
bool uz[DMAX];

int main(){
	int i, ok, poz;
	int sum = 0, weight = 0;
	int sumAct, weightAct;

	fin >> n >> G;
	for (i = 1; i <= n; i++) fin >> w[i] >> p[i];

	ok = 1;
	while (ok){
		ok = 0;
		poz = 0;
		sumAct = sum;
		weightAct = weight;
		for (i = 1; i <= n; i++){
			if (!uz[i] && weight + w[i] <= G && sum + p[i] > sumAct){
				poz = i;
				sumAct = sum + p[i];
				weightAct = weight + w[i];
				ok = 1;
			}
		}
		uz[poz] = true;
		sum = sumAct;
		weight = weightAct;
	}

	fout << sum;

	return 0;
}