Pagini recente » Cod sursa (job #2595293) | Cod sursa (job #853542) | Cod sursa (job #1168177) | Cod sursa (job #2494256) | Cod sursa (job #2121651)
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
int main() {
ifstream f1("rucsac.in");
ofstream f2("rucsac.out");
int N, G, w, p;
f1 >> N >> G;
int weight[N], profit[N];
int partial[G+1][2];
for (int i = 0; i < N; i++) {
f1 >> weight[i] >> profit[i];
}
for (int i = 0; i <= G; i++) {
partial[i][0] = 0;
partial[i][1] = 0;
}
for (int j = 1; j <= N; j++) {
// clear prev line in marix[G][2]
for (int i = 1; i <= G; i++) {
partial[i][0] = partial[i][1];
partial[i][1] = 0;
}
// init profit
partial[weight[j - 1]][1] = profit[j - 1];
for (int i = 1; i <= G; i++) {
partial[i][1] = max(partial[i][1] , partial[i][0]);
if (i >= weight[j - 1]) {
partial[i][1] = max(partial[i][1], profit[j - 1]);
partial[i][1] = max(partial[i][1], profit[j - 1] + partial[i - weight[j - 1]][0]);
}
}
}
f2 << partial[G][1];
f1.close();
f2.close();
return 0;
}