Cod sursa(job #650420)

Utilizator the_snyper06FMI - ALexandru Mihai the_snyper06 Data 18 decembrie 2011 00:11:45
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.57 kb
#include<cstdio>
#define max(a, b) (a > b ? a : b)

int N, G;

int main() {
	freopen("rucsac.in", "r", stdin), freopen("rucsac.out", "w", stdout);
	scanf("%d %d", &N, &G);
	
	int i, j, greutate, profit, lin1[G + 1], lin2[G + 1], *l1 = lin1, *l2 = lin2, *aux;
	for(i = 0; i <= G; i++) l1[i] = l2[i] = 0;
	for(i = 1; i <= N; i++) {
		scanf("%d %d", &greutate, &profit);
		for(j = 1; j <= G; j++)
			if(j < greutate) l2[j] = l1[j];
			else l2[j] = max(l1[j], l1[j - greutate] + profit);
		aux = l1, l1 = l2, l2 = aux;
	}
	
	printf("%d\n", l1[G]);
	
	return 0;
}