Cod sursa(job #2705385)

Utilizator zerolightningIon Bobescu zerolightning Data 12 februarie 2021 15:13:19
Problema Problema rucsacului Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#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;
}