Cod sursa(job #687989)

Utilizator federerUAIC-Padurariu-Cristian federer Data 22 februarie 2012 22:07:12
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.55 kb
#include<fstream>
#define Nmax 5001
#define Gmax 10001
using namespace std;

int best[2][Gmax], c[Nmax], g[Nmax];
int i, j, G, n, k;

int main()
{
	freopen("rucsac.in", "r", stdin);
	freopen("rucsac.out", "w", stdout);
	
	scanf("%d%d%", &n, &G);
	for(i=1;i<=n;i++)
		scanf("%d%d", &g[i], &c[i]);
	int k=0;
	for(i=1;i<=n;++i, k=1-k)
		for(j=0;j<=G;++j)
		{
			best[1-k][j]=best[k][j];
			if(g[i]<=j)
				best[1-k][j]=max(best[1-k][j], best[k][j-g[i]]+c[i]);
		}
	printf("%d\n", best[k][G]);
	
	fclose(stdin);
	fclose(stdout);
	return 0;
}