Pagini recente » Cod sursa (job #1555771) | Cod sursa (job #2211653) | Cod sursa (job #305248) | Cod sursa (job #2374324) | Cod sursa (job #2884172)
#include <fstream>
using namespace std;
ifstream fin ("rucsac.in");
ofstream fout ("rucsac.out");
int n, G, g[5001], p[5001], dp[3][10001];
int main()
{
fin >> n >> G;
for (int i = 1; i <= n; i++)
fin >> g[i] >> p[i];
dp[1][g[1]] = p[1];
int l1 = 1, l2 = 2;
for (int i = 2; i <= n; i++) {
for (int j = 0; j <= G; j++) {
dp[l2][j] = dp[l1][j];
if (j - g[i] >= 0)
dp[l2][j] = max (dp[l2][j], dp[l1][j - g[i]] + p[i]);
}
l1 = 3 - l1;
l2 = 3 - l2;
}
int pmax = 0;
for (int j = 0; j <= G; j++)
pmax = max (pmax, dp[l1][j]);
fout << pmax;
return 0;
}