Pagini recente » Cod sursa (job #1981951) | Cod sursa (job #847171) | Cod sursa (job #253562) | Cod sursa (job #2625480) | Cod sursa (job #2970596)
//
// main.cpp
// Problema rucsacului (infoarena)
//
// Created by Andrei Bădulescu on 25.01.23.
//
#include <algorithm>
//#include <iostream>
#include <fstream>
using namespace std;
ifstream cin("rucsac.in");
ofstream cout("rucsac.out");
const int N = 5000;
const int G = 10000;
struct item {
int reward, weight;
};
item items[N + 1];
int profit[G + 1];
int n, maxG;
bool comparisonArgument(item lhs, item rhs) {
return lhs.weight < rhs.weight;
}
int main() {
cin >> n >> maxG;
for (auto i = 1; i <= n; i++) {
cin >> items[i].weight;
cin >> items[i].reward;
}
sort(items + 1, items + n + 1, comparisonArgument);
for (auto i = 1; i <= maxG; i++) {
profit[i] = -1;
}
for (auto i = 1; i <= n; i++) {
for (auto j = maxG - items[i].weight; j >= 0; j--) {
if (profit[j] != -1 && profit[j] + items[i].reward > profit[j + items[i].weight]) {
profit[j + items[i].weight] = profit[j] + items[i].reward;
}
}
}
int result = 0;
for (auto i = 1; i <= maxG; i++) {
result = max(result, profit[i]);
}
cout << result;
return 0;
}