Cod sursa(job #1520498)
Utilizator | Data | 8 noiembrie 2015 21:06:07 | |
---|---|---|---|
Problema | Problema rucsacului | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.5 kb |
#include <fstream>
using namespace std;
ifstream f("rucsac.in");
ofstream g("rucsac.out");
int N,G,w[5001],p[5001],sol[5001][10001];
int main()
{
f>>N>>G;
for(int i=1;i<=N;++i)
f>>w[i]>>p[i];
int l=0;
for(int i=1;i<=N;++i,l=1-l)
for(int wc=0;wc<=G;++wc)
{
sol[l][wc]=sol[1-l][wc];
if(wc>=w[i])
sol[l][wc]=max(sol[l][wc],sol[1-l][wc-w[i]]+p[i]);
}
g<<max(sol[1-l][G],sol[l][G]);
g.close();
}