Cod sursa(job #2265294)
Utilizator | Data | 20 octombrie 2018 22:03:36 | |
---|---|---|---|
Problema | Problema rucsacului | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 0.54 kb |
#include <fstream>
using namespace std;
ifstream f("rucsac.in");
ofstream g("rucsac.out");
int n,gmax,i,w[5003],p[5003],D[3][10005],maxi,cw;
int main()
{
f>>n>>gmax;
for(i=1;i<=n;i++) f>>w[i]>>p[i];
for(i=1;i<=n;i++)
{ for(cw=1;cw<=gmax;cw++)
{ if(cw-w[i]>=0) D[2][cw] = max(D[1][cw],D[1][cw-w[i]]+p[i]);
else D[2][cw] = D[1][cw];
maxi = max(D[2][cw],maxi);
}
for(cw=1;cw<=gmax;cw++) D[1][cw] = D[2][cw];
}
g<<maxi<<'\n';
return 0;
}