Pagini recente » Cod sursa (job #803994) | Cod sursa (job #900365) | Cod sursa (job #2516284) | Cod sursa (job #2608797) | Cod sursa (job #2060955)
#include <fstream>
using namespace std;
ifstream fin("rucsac.in");
ofstream fout("rucsac.out");
int n,g,i,j,w[5001],p[5001],sol;
int d[10001];
int main()
{
fin >> n >> g;
for (i=1; i<=n; i++)
fin >> w[i] >> p[i];
///D[i][j] = profitul maxim pe care il putem avea luand o submultime
///a caror greutate insumata e j
///din cauza memoriei, cum nu avem nevoie decat de linia precedenta
///tinem minte ultimele 2 linii
///si pentru a avea o singura linie parcurgand linia in sensul
///invers al greutatilor
for (i=1; i<=n; i++)
for (j=g-w[i]; j>=0; j--)
{
d[j+w[i]] = max(d[j+w[i]], d[j]+p[i]);
sol = max(sol, d[j+w[i]]);
}
fout << sol;
return 0;
}