Cod sursa(job #811328)

Utilizator macauaMacaua Online macaua Data 11 noiembrie 2012 22:04:23
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include <iostream>
#include <stdio.h>
using namespace std;

int min(int a, int b)
{
	return a > b ? b : a;
}
int max(int a, int b)
{
	return a > b ? a : b;
}
using namespace std;

int main()
{
	int G, W, EG, CG, i, j, D[5010][10010];

	freopen("rucsac.in", "r", stdin);
	freopen("rucsac.out", "w", stdout);

	cin>>G>>W;

	for(i=1;i<=G;++i)
		for(j=0;j<=W;++j)
			D[i][j] = 0;

	for(i=1;i<=G;++i)
	{
		cin>>EG>>CG;
		
		for(j=0;j<=W;++j)
		{

			if(j < EG)
				D[i][j] = D[i-1][j];
			else
				D[i][j] = max(D[i][j], CG + D[i-1][j - EG]);
		
		}
	}
	
	cout<<D[G][W]<<"\n";

	return 0;
	
}