Pagini recente » Cod sursa (job #2630294) | Cod sursa (job #1692935) | Cod sursa (job #1166671) | Cod sursa (job #1738613) | Cod sursa (job #2215047)
#include <fstream>
#include <iostream>
using namespace std;
int knapsack(int W[], int P[], int B , int n)
{
int k = 0;
int Opt[2][B + 1];
for(int i = 0; i < 2; i++)
for(int j = 0; j < B + 1; j++)
Opt[i][j] = 0;
for (int i = 1; i <= n; i++)
{
for (int w = 1; w <= B; w++)
{
Opt[k][w] = Opt[1 - k][w];
if (w >= W[i])
Opt[k][w] = max(Opt[1 - k][w], P[i] + Opt[1 - k][w - W[i]]);
}
k = 1 - k;
}
return Opt[1 - k][B];
}
int main()
{
ifstream fin("rucsac.in");
ofstream fout("rucsac.out");
int n, B;
fin >> n >> B;
int W[n + 1]; // weights
int P[n + 1]; // profits
for (int i = 1; i <= n; i++)
fin >> W[i] >> P[i];
fout << knapsack(W, P, B, n);
return 0;
}