Pagini recente » Cod sursa (job #461339) | Cod sursa (job #72438) | Cod sursa (job #1492618) | Cod sursa (job #2064198) | Cod sursa (job #2310992)
#include <fstream>
#include<vector>
using namespace std;
ifstream f("rucsac.in");
ofstream g("rucsac.out");
struct obiect
{
int w,p;
};
int n,G;
vector<obiect> ob;
vector<vector<int> > dp;
int main()
{
f>>n>>G;
ob.resize(n);
for(int i=0;i<n;++i)
f>>ob[i].w>>ob[i].p;
dp.resize(n);
dp[0].resize(G+1);
for(int i=0;i<=G;++i)
if(i<ob[0].w)
dp[0][i]=0;
else dp[0][i]=ob[0].p;
for(int j=1;j<n;++j)
{
dp[j].resize(G+1);
for(int i=0;i<=G;++i)
if(i<ob[j].w) dp[j][i]=dp[j-1][i];
else dp[j][i]=max(dp[j-1][i],dp[j-1][i-ob[j].w]+ob[j].p);
}
g<<dp[n-1][G]<<'\n';
return 0;
}