Pagini recente » Cod sursa (job #2138369) | Cod sursa (job #2907324) | Cod sursa (job #1525254) | Cod sursa (job #2130065) | Cod sursa (job #2533169)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("rucsac.in");
ofstream fout("rucsac.out");
#define cin fin
#define cout fout
#define gmax 10001
#define nmax 5001
int n, gMax;
int greutate[nmax];
int profit[nmax];
int dp[2][gmax];
void read()
{
cin >> n >> gMax;
for(int i = 1; i <= n; i++)
{
cin >> greutate[i] >> profit[i];
}
}
void solve()
{
int curent = 1;
for(int i = 1; i <= n; i++)
{
/// luam fiecare obiect si il verificam
for(int j = gMax; j >= 1; j--)
{
dp[curent][j] = dp[1 - curent][j];
if(j >= greutate[i])
{
dp[curent][j] = max(dp[1 - curent][j], dp[1 - curent][j - greutate[i]] + profit[i]);
}
}
curent = 1 - curent;
}
cout << dp[1 - curent][gMax] << endl;
}
int main()
{
read();
solve();
}