Pagini recente » Cod sursa (job #2528732) | Cod sursa (job #404196) | Cod sursa (job #412448) | Cod sursa (job #198359) | Cod sursa (job #2170672)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("rucsac.in");
ofstream fout("rucsac.out");
int w[5005],p[5005];
int dp[2][10005];
int main()
{
int n,g;
/// dp[i][j] = profitul maxim pe care il putem obtine din primele i obiecte avand greutatea exact j
fin >> n >> g;
for(int i=1;i<=n;i++)
{
fin >> w[i] >> p[i];
}
for(int i=1;i<=n;i++)
{
for(int j=0;j<=g;j++)
{
dp[i%2][j]=dp[(i-1)%2][j];
if(w[i]<=j) dp[i%2][j]=max(dp[i%2][j],dp[(i-1)%2][j-w[i]]+p[i]);
}
}
int sol=dp[n%2][0];
for(int i=1;i<=g;i++)
{
sol=max(dp[n%2][i],sol);
}
fout << sol;
return 0;
}