Pagini recente » Cod sursa (job #2928967) | Cod sursa (job #1384836) | Cod sursa (job #699415) | Rezultatele filtrării | Cod sursa (job #3179197)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("rucsac.in");
ofstream fout ("rucsac.out");
int n, gmax, dp[2][10001], g[5001], p[5001];
int main()
{
fin >> n >> gmax;
for (int i = 1; i <= n; i++)
{
fin >> g[i] >> p[i];
}
curent=0;
precedent=1;
for (int i = 1; i <= n; i++)
{
for (int cw = 0; cw <= gmax; cw++)
{
dp[curent][cw] = dp [precedent][cw];
if (g[i] <= cw)
dp[curent][cw] = max(dp[curent][cw], dp[precedent][cw-g[i]] + p[i]);
}
swap(curent,precedent);
}
fout << dp[precedent][gmax];
return 0;
}