Pagini recente » Cod sursa (job #1017935) | Cod sursa (job #511699) | Cod sursa (job #2253805) | Cod sursa (job #3213351) | Cod sursa (job #1831733)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("rucsac.in");
ofstream out("rucsac.out");
const int nMax = 5005;
const int gMax = 10005;
int n, g;
int w[nMax];
int p[nMax];
int dp[2][gMax];
void citire()
{
in >> n >> g;
for(int i = 1; i <= n; ++i)
in >> w[i] >> p[i];
}
void rezolvare()
{
int current = 1, last = 0;
for(int i = 1; i <= n; ++i)
{
for(int j = 1; j <= g; ++j)
{
if(j >= w[i])
dp[current][j] = max(dp[last][j], dp[last][j - w[i]] + p[i]);
else
dp[current][j] = dp[last][j];
}
current ^= 1;
last ^= 1;
}
out << dp[last][g];
}
int main()
{
citire();
rezolvare();
return 0;
}