Cod sursa(job #840926)

Utilizator antonioteoZait Teodor Antonio antonioteo Data 23 decembrie 2012 14:49:48
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include <fstream>
using namespace std;
const char iname[] = "rucsac.in";
const char oname[] = "rucsac.out";
ifstream fin(iname);
ofstream fout(oname);
int N , Gmax , i , j , gc , ind_aux;
int G[ 5004 ] , P[ 5004 ];
int DP[ 2 ][ 10001 ];
int main()
{
	fin >> N >> Gmax;
	for (i = 1; i <= N; ++i)
		fin >> G[i] >> P[i];
	for (i = 1; i <= N; ++i)
	{
		for (gc = 0; gc <= Gmax; ++gc)
		{
			if (i % 2) 
				ind_aux = 0;
			else 
				ind_aux = 1;
			DP[i % 2][gc] = DP[ind_aux][gc];
			if (G[i % 2] <= gc)
				DP[i % 2][gc] = max(DP[ind_aux][gc - G[i]] + P[i] , DP[ind_aux][gc]);
		}
	}
	fout << DP[N % 2][Gmax] << '\n';
	return 0;
}