Cod sursa(job #639849)

Utilizator otilia_sOtilia Stretcu otilia_s Data 24 noiembrie 2011 00:49:44
Problema Problema rucsacului Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.57 kb
#include <stdio.h>
#define NMAX 5002
#define GMAX 10002
int w[NMAX],p[NMAX];
int C[2][GMAX];

inline int max(int a, int b)
{
	return a>b? a:b;
}

int main()
{
	freopen("rucsac.in", "r", stdin);
    freopen("rucsac.out", "w", stdout);
	int n,i,Gmax,b,g;
	
    scanf("%d%d", &n, &Gmax);
    for(i = 1; i <= n; ++i)
        scanf("%d%d", &w[i], &p[i]);

	b=1;
	for (i=1;i<=n;++i)
	{
		b^=1;
		for (g=0;g<=Gmax;++g)
		{
			C[b][g]=C[b^1][g];
			if (w[g]<=g)
				C[b][g]=max(C[b][g],C[b^1][g-w[i]]+p[i]);
		}
	}
	
	printf("%d\n",C[b][Gmax]);
	return 0;
}