Pagini recente » Cod sursa (job #2634611) | Cod sursa (job #2713496) | Cod sursa (job #60789) | Cod sursa (job #2836962) | Cod sursa (job #2310996)
#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(2);
dp[0].resize(G+1);
dp[1].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)
{
for(int i=0;i<=G;++i)
if(i<ob[j].w) dp[1][i]=dp[0][i];
else dp[1][i]=max(dp[0][i],dp[0][i-ob[j].w]+ob[j].p);
for(int i=0;i<=G;++i)
dp[0][i]=dp[1][i];
}
g<<dp[0][G]<<'\n';
return 0;
}