Pagini recente » Cod sursa (job #1533854) | Cod sursa (job #3297388) | Cod sursa (job #585192) | Cod sursa (job #594685) | Cod sursa (job #1466779)
#include <fstream>
using namespace std;
ifstream fin("rucsac.in");
ofstream fout("rucsac.out");
const int NMAX = 5005;
int N, G, nr;
int W[NMAX], P[NMAX], PD[75][75];
int pd(int st, int dr, int gmax)
{
if( (gmax - W[st] < 0) || (gmax - W[dr] < 0) || (st > dr)) return 0;
if(PD[st][dr])
return PD[st][dr];
return PD[st][dr] = max( pd(st+1,dr,gmax - W[st]) + P[st], pd(st,dr-1,gmax - W[dr]) + P[dr]);
}
int main()
{
fin >> N >> G;
for(int i=1; i<=N; i++) fin >> W[i] >> P[i];
fout << pd(1, N, G);
return 0;
}