Cod sursa(job #677352)

Utilizator informatician28Andrei Dinu informatician28 Data 10 februarie 2012 01:20:48
Problema Problema rucsacului Scor 35
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include<fstream>
#define DIM1 5001
#define DIM2 10001
using namespace std; 

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

int Profit[DIM1][DIM2];
int N, G;
int W[DIM1], P[DIM1];

int main()
{
	int i, j;
	
	in >> N >> G;
	for(i = 1; i <= N; i++)
		in >> W[i] >> P[i];
	
	for(i = 1; i <= N; i++)
		for(j = 1; j <= G; j++)
			{
				Profit[i][j] = Profit[i-1][j];  //nu punem prima data obiectul curent
				if( W[i] <= j )
					Profit[i][j] = max(Profit[i][j], Profit[i-1][j-W[i]] + P[i] );  // numai in cazul in care maximizez profitul
		}
			
			out << Profit[N][G]; 
			
	return 0;
}