Pagini recente » Cod sursa (job #1207404) | Cod sursa (job #810916) | Cod sursa (job #2892113) | Cod sursa (job #174827) | Cod sursa (job #2855548)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int N, G, x, y;
vector<int> W, P;
ifstream cit("rucsac.in");
ofstream afis("rucsac.out");
int main()
{
cit >> N >> G;
int dp[N + 1][G + 1];
for (int i = 0; i < N; i++)
{
cit >> x >> y;
W.push_back(x);
P.push_back(y);
}
for (int i = 0; i < N; i++)
{
for (int j = 0; j <= G; j++)
{
if (i == 0)
{
if (j >= W[i])
{
dp[i][j] = P[i];
}
else
{
dp[i][j] = 0;
}
}
else
{
if (j - W[i] >= 0)
dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - W[i]] + P[i]);
else
dp[i][j] = dp[i - 1][j];
}
}
}
afis << dp[N - 1][G];
cit.close();
afis.close();
return 0;
}