Pagini recente » Cod sursa (job #1507599) | Cod sursa (job #1253779) | Cod sursa (job #1857032) | Cod sursa (job #331217) | Cod sursa (job #2046344)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("rucsac.in");
ofstream out("rucsac.out");
const int maxn = 5005;
const int maxg = 10005;
pair <int, int> v[maxn];
int dp[2][maxg];
int main() {
int n, g;
in >> n >> g;
for(int i = 1; i <= n; i++)
in >> v[i].second >> v[i].first;
dp[1][v[1].second] = v[1].first;
for(int i = 2; i <= n; i++)
{
int p = i % 2;
for(int j = 0; j <= g; j++)
{
if(j < v[i].second)
dp[p][j] = dp[1 - p][j];
else
dp[p][j] = max(dp[1 - p][j - v[i].second] + v[i].first, dp[1 - p][j]);
}
}
int mx = 0;
for(int i = 1; i <= g; i++)
mx = max(mx, dp[n % 2][i]);
out << mx << "\n";
return 0;
}