Cod sursa(job #1495897)

Utilizator andrici_cezarAndrici Cezar andrici_cezar Data 3 octombrie 2015 20:46:27
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <cstdio>
#include <algorithm>
#include <cstring>

using namespace std;

int N, G, result[2][10001];

struct obj { int w; int p; } el;

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

	scanf("%d %d\n", &N, &G);

	for (int elIndex = 0; elIndex < N; ++elIndex) {
		scanf("%d %d\n", &el.w, &el.p);

		for (int currG = 1; currG <= G; ++currG) {
			if (currG > el.w || currG == el.w) {
				int val = result[0][currG - el.w] + el.p;
				result[1][currG] = max(result[0][currG], val);
			} else {
				result[1][currG] = result[0][currG];
			}
		}

		memcpy(result[0], result[1], sizeof(result[1]));

		// for (int j = 1; j <= G; ++j) {
		// 	printf("%d ", result[1][j]);
		// }
		// printf("\n");
	}

	printf("%d\n", result[0][G]);

	return 0;
}