Cod sursa(job #633521)

Utilizator titusuTitus C titusu Data 13 noiembrie 2011 22:16:53
Problema Problema rucsacului Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <iostream>
#include <iomanip>
#include <fstream>
#define INF 1000000000
using namespace std;

int n,G,w[5005],p[5005], A[10001], B[10001];

void citire(){
	ifstream fin("rucsac.in");
	fin>>n>>G;
	for(int i=1;i<=n;++i)
		fin >> w[i]>>p[i];
	fin.close();
}

void afisare(){
	ofstream fout("rucsac.out");
	fout << A[G];
	fout.close();
}

void rezolvare(){
	//A[i][g] = profitul maxim care se poate obtine cu primele i obiecte, a caror greutate insumata este g
	for(int i=1;i<=n;++i){
		//iau fiecare obiect
		for(int g=1;g<=G;++g){
			int p1 = A[g];
			int p2 = g>=w[i]?A[g-w[i]]+p[i]:0;
			B[g] = p1>p2?p1:p2;
		}
		for(int j=1;j<=G;++j)	
			A[j] = B[j];
	}
}

int main(){
	citire();
	rezolvare();
	afisare();
}