Pagini recente » Cod sursa (job #120072) | Cod sursa (job #1886021) | Cod sursa (job #1647559) | Cod sursa (job #2504993) | Cod sursa (job #2705385)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int N, G;
struct item
{
int weight;
int price;
};
item items[5001];
int solve()
{
vector<vector<int>> matrix(N + 1, vector<int>(G + 1));
for (int i = 1; i <= N; i++)
{
for (int curr_weight = 0; curr_weight <= G; curr_weight++)
{
matrix[i][curr_weight] = matrix[i - 1][curr_weight];
if (curr_weight - items[i].weight >= 0)
{
matrix[i][curr_weight] = max(matrix[i][curr_weight], matrix[i - 1][curr_weight - items[i].weight] + items[i].price);
}
}
}
return matrix[N][G];
}
int main()
{
ifstream f("rucsac.in");
ofstream g("rucsac.out");
// Program
f >> N;
f >> G;
for (int i = 1; i <= N; i++)
{
item temp;
f >> temp.weight;
f >> temp.price;
items[i] = temp;
}
g << solve();
// Exit
f.close();
g.close();
return 0;
}