Pagini recente » Cod sursa (job #1736276) | Cod sursa (job #2076704) | Cod sursa (job #1406448) | Cod sursa (job #2402295) | Cod sursa (job #2285524)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("rucsac.in");
ofstream fout("rucsac.out");
int main()
{
int N, G, i, j;
fin>>N>>G;
vector<int> prof(N), weig(N);
vector<vector<int>> dp(2, vector<int>(G+1, 0));
for(i = 0; i < N; ++i)
fin>>weig[i]>>prof[i];
int curr = 0, last = 1, w;
for(i = 0; i < N; ++i) {
for(w = 0; w <= G; ++w) {
dp[curr][w] = dp[last][w];
if(w - weig[i] >= 0)
dp[curr][w] = max(dp[curr][w], dp[last][w-weig[i]] + prof[i]);
}
last = curr;
curr = 1 - curr;
}
int sol = 0;
//for(auto x : dp[last])
// sol = max(sol,x);
sol = dp[last][G];
fout<<sol;
return 0;
}