Pagini recente » Cod sursa (job #105978) | Cod sursa (job #946511) | Cod sursa (job #138442) | Cod sursa (job #1473649) | Cod sursa (job #2731268)
#include <iostream>
#include <fstream>
#define MAX 10002
using namespace std;
int n,G,g,p,dp[MAX];
ifstream fin("rucsac.in");
ofstream fout("rucsac.out");
int main()
{
/// dp[i] = profitul obtinut daca avem o submultime de suma
/// a greutatilor egala cu i
fin >> n >> G;
for(int i = 1; i <= G; i++)
{
dp[i] = -1;
}
dp[0] = 0;
for(int i = 1; i <= n; i++)
{
fin >> g >> p;
for(int j = G-g; j >= 0; j--)
{
if(dp[j]!=-1)
{
if(dp[j+g] < dp[j]+p){
dp[j+g] = dp[j]+p;
}
}
}
}
int ans = 0;
for(int i = 1; i <= G; i++)
{
ans = max(dp[i], ans);
}
fout << ans << "\n";
return 0;
}