Pagini recente » Cod sursa (job #2981636) | Cod sursa (job #2931625) | Cod sursa (job #3281172) | Cod sursa (job #248965) | Cod sursa (job #1614045)
#include <fstream>
#define MaxN 5001
#define MaxG 10001
using namespace std;
ifstream is("rucsac.in");
ofstream os("rucsac.out");
void Read();
void Write();
void Knapsack();
int c[MaxN][MaxG];
int w[MaxN], p[MaxN];
int n, g;
int main()
{
Read();
Knapsack();
Write();
is.close();
os.close();
return 0;
}
void Read()
{
is >> n >> g;
for ( int i = 1; i <= n; ++i )
is >> w[i] >> p[i];
}
void Write()
{
os << c[n][g] << '\n';
}
void Knapsack()
{
for ( int i = 1; i <= n; ++i )
for ( int j = 0; j <= g; ++j )
{
c[i][j] = c[i - 1][j];
if ( j >= w[i] )
{
c[i][j] = max(c[i][j], c[i - 1][j - w[i]] + p[i]);
}
}
}