Pagini recente » Cod sursa (job #1981887) | Cod sursa (job #2011392) | Cod sursa (job #624129) | Cod sursa (job #515364) | Cod sursa (job #977798)
Cod sursa(job #977798)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fi("rucsac.in");
ofstream fo("rucsac.out");
struct O {
O(int w, int p) : w(w), p(p) {}
int w, p;
};
int N, W;
vector<O> objs;
void read() {
fi >> N >> W;
for(int i = 0; i < N; i++) {
int w, p;
fi >> w >> p;
objs.push_back(O(w, p));
}
}
#define MAXG 10000
void solve() {
int *last = new int[MAXG + 1];
int *current = new int[MAXG + 1];
for(int i = 0; i < MAXG; i++) current[i] = 0;
for(int i = 0; i < N; i++) {
swap(current, last);
int w = objs[i].w, p = objs[i].p;
for(int g = 0; g <= W; g++) {
current[g] = last[g];
if(g - w >= 0 && current[g] < last[g - w] + p) {
current[g] = last[g - w] + p;
}
}
}
fo << current[W] << endl;
delete[] last;
delete[] current;
}
int main(int argc, char *argv[]) {
read();
solve();
return 0;
}