Pagini recente » Monitorul de evaluare | Cod sursa (job #3341721) | Cod sursa (job #3341711) | Cod sursa (job #3341873) | Cod sursa (job #3341720)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("rucsac.in");
ofstream fout("rucsac.out");
const int NMAX = 5001;
int n, G, weight[NMAX], profit[NMAX], dp[2][NMAX];
int main()
{
fin >> n >> G;
for(int i = 1; i <= n; i++)
fin >> weight[i] >> profit[i];
for(int i = 1; i <= n; i++)
{
for(int w = weight[i]; w <= G; w++)
dp[1][w] = max(dp[1][w], dp[0][w - weight[i]] + profit[i]);
memcpy(dp[0], dp[1], sizeof(dp[1]));
}
fout << *max_element(dp[0], dp[0] + NMAX);
fin.close();
fout.close();
return 0;
}