Cod sursa(job #1377466)

Utilizator alex_unixPetenchea Alexandru alex_unix Data 5 martie 2015 21:59:26
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb

#include <fstream>
#include <algorithm>

const int MAX_N(5000);
const int MAX_G(10001);

int n, g, Dp [MAX_G], Best;

struct
{
	int w;
	int p;
} Obj [MAX_N];

inline void Read (void)
{
	std::ifstream input("rucsac.in");
	input >> n >> g;
	for (int i(0) ; i < n ; ++i)
		input >> Obj[i].w >> Obj[i].p;
	input.close();
}

inline void Print (void)
{
	std::ofstream output("rucsac.out");
	output << Best << '\n';
	output.close();
}

inline void Dynamic (void)
{
	for (int i(0) ; i <= n ; ++i)
		for (int j(g - Obj[i].w) ; j >= 0 ; --j)
			Dp[j + Obj[i].w] = std::max(Dp[j + Obj[i].w],Dp[j] + Obj[i].p);
	for (int i(1) ; i <= g ; ++i)
		Best = std::max(Best,Dp[i]);
}

int main (void)
{
	Read();
	Dynamic();
	Print();
	return 0;
}