Pagini recente » Cod sursa (job #2359562) | Cod sursa (job #2555387) | Cod sursa (job #2960713) | Cod sursa (job #908595) | Cod sursa (job #3245597)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
int knapsackProblem(vector<vector<int>>& items, int capacity) {
vector<int> previous(capacity + 1, 0);
vector<int> current(capacity + 1, 0);
for (int i = 1; i <= items.size(); i++) {
int currentWeight = items[i - 1][0];
int currentValue = items[i - 1][1];
for (int c = 0; c <= capacity; c++) {
if (currentWeight > c) {
current[c] = previous[c];
} else {
current[c] = max(previous[c], previous[c - currentWeight] + currentValue);
}
}
previous = current;
}
return current[capacity];
}
int main() {
ifstream fin("rucsac.in");
ofstream fout("rucsac.out");
int n, capacity;
fin >> n >> capacity;
vector<vector<int>> items(n, vector<int>(2));
for (int i = 0; i < n; i++) {
fin >> items[i][0] >> items[i][1];
}
int maxProfit = knapsackProblem(items, capacity);
fout << maxProfit << endl;
return 0;
}