Pagini recente » infoarena - te ajutam sa devii olimpic! | Cod sursa (job #1499162) | infoarena - comunitate informatica, concursuri de programare | Cod sursa (job #385363) | Cod sursa (job #2605647)
#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;
}