Pagini recente » Cod sursa (job #2454597) | Cod sursa (job #2371276) | Cod sursa (job #1996388) | Cod sursa (job #491828) | Cod sursa (job #2932252)
#include <fstream>
using namespace std;
ifstream cin("rucsac.in");
ofstream cout("rucsac.out");
int n, m, g[5000 + 10], v[5000 + 10], matrice[5000 + 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 = 1; j <= m; j++)
{
matrice[i][j] = matrice[i][j - 1]; //Se analizeaza cazul in care nu se adauga obiectul i in rucsac
if (g[i] <= j) //Daca se poate adauga obiectul i in rucsac
matrice[i][j] = max(matrice[i - 1][j], matrice[i - 1][j - g[i]] + v[i]);
}
cout << matrice[n][m];
}
int main()
{
citire();
rezolvare();
return 0;
}