Pagini recente » Cod sursa (job #2119128) | Cod sursa (job #2119047)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("rucsac.in");
ofstream out("rucsac.out");
const int MAXN = 5005;
const int MAXG = 10005;
int D[MAXN][MAXG];
int G[MAXN];
int C[MAXN];
int N,Greutate;
void Read()
{
in >> N >> Greutate;
for ( int i = 1; i <= N ;++i)
{
int x,y;
in >> x>>y;
G[i] = x;
C[i] = y;
}
}
void Rucsac()
{
int i = 1;
if(G[i] <= Greutate )
D[1][G[i]] = C[1];
else D[1][G[i]] = 0;
for ( i = 2 ; i <= N ; ++i)
for ( int j = 0 ; j <= Greutate ; ++j)
{
D[i][j] = C[j];
if(G[i] <= j)
D[i][j] = max(D[i-1][j] , D[i-1][j-G[i]]+C[i]);
}
int Maxim = D[N][1];
for ( int j = 2; j <= Greutate ; ++j)
Maxim = max(Maxim,D[N][j]);
out << Maxim;
}
int main()
{
Read();
Rucsac();
}