Cod sursa(job #2791419)

Utilizator Langa_bLanga Radu Langa_b Data 30 octombrie 2021 14:40:49
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#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];
	}
}