Cod sursa(job #1088731)

Utilizator robert_stefanRobert Stefan robert_stefan Data 20 ianuarie 2014 19:22:26
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include <fstream>
#define IN "rucsac.in"
#define OUT "rucsac.out"
#define NMAX 5005
#define GMAX 10005

using namespace std;

ifstream in(IN);
ofstream out(OUT);

int n, G, gr[GMAX], profit[NMAX], castig1[GMAX], castig2[GMAX];

int main()
{
	int i, j;
	in>>n>>G;
	for(i=1; i<=n; ++i)
		in>>gr[i]>>profit[i];
	for(i=1; i<=n; ++i)
	{
		for(j=1; j<=G; ++j)
		{
			if(gr[i]<=j)
				if( profit[i] + castig1[j-gr[i]] > castig1[j] )
					castig2[j]=castig1[j-gr[i]] + profit[i];
				else
					castig2[j]=castig1[j];
			else
				castig2[j]=castig1[j];
		}
		for(int k=1; k<=G; ++k)
			castig1[k]=castig2[k];
	}
	out<<castig2[G]<<'\n';
	in.close();
	out.close();
	return 0;
}