Cod sursa(job #826206)

Utilizator Sanduleac_VladSanduleac Vllad Alexandru Sanduleac_Vlad Data 30 noiembrie 2012 14:01:52
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.54 kb
#include <stdio.h>
#define max(x,y) ((x) > (y)? (x) : (y))

long v[2][10001];
long N, G, g[5001], w[5001];

int main() {
	long i, j;
	freopen("rucsac.in", "r", stdin);
	freopen("rucsac.out", "w", stdout);
	scanf("%ld %ld", &N, &G);
	for(i = 1; i <= N; i++)
		scanf("%ld %ld", &g[i], &w[i]);
	for(i = 1; i <= N; i++) {
		for(j = 1; j <= G; j++)
			if(j < g[i])
				v[i % 2][j] = v[(i - 1) % 2][j];
			else v[i % 2][j] = max(v[(i - 1) % 2][j], v[(i - 1) % 2][j - g[i]] + w[i]);
	}
	i--;
	printf("%ld", v[i % 2][G]);
	return 0;
}