Pagini recente » Cod sursa (job #749013) | Cod sursa (job #1214313) | Cod sursa (job #630301) | Cod sursa (job #1148229) | Cod sursa (job #2791419)
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("rucsac.in");
ofstream cout("rucsac.out");
int n, wm, v1[10002], v2[10002];
vector<pair<int, int>> vp;
int main() {
cin >> n >> wm;
vp.push_back({ -1, -1 });
for (int i = 1; i <= n; i++) {
int x, y;
cin >> x >> y;
vp.push_back({ y, x });
}
int act = 1, maxi = 0;
for (int i = 1; i <= n; i++) {
if (act == 1) {
for (int j = 0; j <= wm; j++) {
v2[j] = v1[j];
if (j - vp[i].second >= 0 && v1[j]< v1[j - vp[i].second] + vp[i].first) {
v2[j] = v1[j - vp[i].second] + vp[i].first;
}
}
act = 0;
}
else {
for (int j = 0; j <= wm; j++) {
v1[j] = v2[j];
if (j - vp[i].second >= 0 && v1[j] < v1[j - vp[i].second] + vp[i].first) {
v1[j] = v2[j - vp[i].second] + vp[i].first;
}
}
act = 1;
}
}
if (act == 1) {
cout << v1[wm];
}
else {
cout << v2[wm];
}
}