Cod sursa(job #2932278)

Utilizator Daniel_TruscaTrusca Marian-Daniel Daniel_Trusca Data 2 noiembrie 2022 15:28:09
Problema Problema rucsacului Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.72 kb
#include <fstream>
using namespace std;

ifstream cin("rucsac.in");
ofstream cout("rucsac.out");

int n, m, g[5000 + 10], v[5000 + 10], matrice[2+10][10000 + 10];

void citire()
{
	cin >> n >> m;
	for (int i = 1; i <= n; i++)
		cin >> g[i] >> v[i];
}

void rezolvare()
{
	for (int i = 1; i <= n; i++)
	{
		for (int j = 0; j <= m; j++)
		{
			matrice[i][j] = matrice[i - 1][j];	//Se considera cazul in care solutia optima se obtine neadaugand obiectul i
			if (g[i] <= j)	//Se considera cazul in care solutia optima se obtie adaugand obiectul i
				matrice[i][j] = max(matrice[i][j], matrice[i - 1][j - g[i]] + v[i]);
		}
	}
	cout << matrice[n][m];
}


int main()
{
	citire();
	rezolvare();
	return 0;
}