Cod sursa(job #2605647)

Utilizator michael_blazemihai mihai michael_blaze Data 25 aprilie 2020 16:37:51
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.75 kb
#include <cstdio>
#include <algorithm>

#define MAX_OBJECTS 5001
#define MAX_WEIGHT 10001

using namespace std;

int C[2][MAX_WEIGHT];
int P[MAX_OBJECTS], W[MAX_OBJECTS];

int main() {
	FILE* fin = fopen("rucsac.in", "r");
	FILE* fout = fopen("rucsac.out", "w");

	int numOfObjects, maxWeight;

	fscanf(fin, "%d%d", &numOfObjects, &maxWeight);

	for (int i = 1;i <= numOfObjects;i ++) {
		fscanf(fin, "%d%d", &W[i], &P[i]);
	}

	int l = 0;
	for (int i = 1;i <= numOfObjects;i ++, l = 1 - l)
		for (int j = 0;j <= maxWeight;j ++) {
				if (W[i] <= j)
					C[1 - l][j] = max(C[l][j], C[l][j - W[i]] + P[i]);
				else
					C[1 - l][j] = C[l][j];
			}

	fprintf(fout, "%d", C[l][maxWeight]);
	fclose(fin);
	fclose(fout);
	return 0;
}