Pagini recente » Cod sursa (job #780509) | Cod sursa (job #2329399) | Rezultatele filtrării | Cod sursa (job #3232306) | Cod sursa (job #3179198)
#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];
}
int curent=0;
int 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;
}