Pagini recente » Cod sursa (job #2014437) | Cod sursa (job #2875664) | Cod sursa (job #3158740) | Cod sursa (job #222090) | Cod sursa (job #1241918)
#include <fstream>
using namespace std;
ifstream fin("rucsac.in");
ofstream fout("rucsac.out");
const int MaxN = 5002;
const int MaxV = 10001;
const int Inf = 0x3f3f3f3f;
int n, S;
int v[MaxN];
int g[MaxN];
int c[2][MaxV]; // c[i][j] - val maxima obtinuta cu obiecte [1..i]
// care au in total greutatea CEL MULT j
void Read();
void Knapsack();
int main()
{
Read();
Knapsack();
}
void Knapsack()
{
int lc = 1, lp = 0;
for ( int i = 1; i <= n; ++i, lc = !lc, lp = !lp )
for ( int j = 0; j <= S ; ++j )
{
c[lc][j] = c[lp][j];
if ( j >= g[i] && c[lc][j] < c[lp][j - g[i]] + v[i] )
c[lc][j] = c[lp][j - g[i]] + v[i];
}
fout << c[lp][S];
}
void Read()
{
fin >> n >> S;
for ( int i = 1; i <= n; ++i )
fin >> g[i] >> v[i];
}