Cod sursa(job #1920546)
Utilizator | Data | 10 martie 2017 08:07:48 | |
---|---|---|---|
Problema | Problema rucsacului | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.67 kb |
#include <fstream>
using namespace std;
ifstream cin("rucsac.in");
ofstream cout("rucsac.out");
int n,G,P[5002],W[5002],D[2][10002];
int main()
{
cin>>n>>G;
for(int i=1;i<=n;++i)
cin>>W[i]>>P[i];
for(int i=1;i<=n;++i)
for(int j=0;j<=G;++j)
if(i%2==1)
{
D[1][j]=D[0][j];
if(W[j]<=j)
D[1][j]=max(D[1][j],D[0][j-W[i]]+P[i]);
}
else
{
D[0][i]=D[1][i];
if(W[j]<=G)
D[0][j]=max(D[0][j],D[1][j-W[i]]+P[i]);
}
cout<<D[n%2][G];
return 0;
}