Pagini recente » Cod sursa (job #2589099) | Cod sursa (job #2955395) | Cod sursa (job #52978) | Cod sursa (job #1039512) | Cod sursa (job #3134813)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
struct Obiect
{
int greutate;
int profit;
};
int rezolvaProblemaRucsac(int N, int G, Obiect obiecte[])
{
int dp[N + 1][G + 1];
for (int i = 0; i <= N; i++)
{
for (int j = 0; j <= G; j++)
{
if (i == 0 || j == 0)
dp[i][j] = 0;
else if (obiecte[i - 1].greutate <= j)
dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - obiecte[i - 1].greutate] + obiecte[i - 1].profit);
else
dp[i][j] = dp[i - 1][j];
}
}
return dp[N][G];
}
int main()
{
ifstream fin("rucsac.in");
ofstream fout("rucsac.out");
int N, G;
fin >> N >> G;
Obiect obiecte[N];
for (int i = 0; i < N; i++)
{
fin >> obiecte[i].greutate >> obiecte[i].profit;
}
int profitMaxim = rezolvaProblemaRucsac(N, G, obiecte);
fout << profitMaxim;
return 0;
}