Pagini recente » Cod sursa (job #1340932) | Cod sursa (job #1099992) | Cod sursa (job #817147) | Cod sursa (job #2922600) | Cod sursa (job #2186013)
#include <iostream>
#include <fstream>
#include <climits>
#define dMAX 10000
using namespace std;
int n, capacity;
int w[dMAX + 2], p[dMAX + 2], T[2][dMAX + 2];
bool first;
ifstream fin("rucsac.in");
ofstream fout("rucsac.out");
int KnapSack(int x, int cap) {
int i, j, l = 0;
for (i = 1; i <= x; i++, l = 1 - l) {
for (j = 0; j <= cap; j++) {
T[!first][j] = T[first][j];
if (w[i] <= j) {
T[!first][j] = max(T[!first][j], T[first][j - w[i]] + p[i]);
}
}
first = !first;
}
return T[first][capacity];
}
int main()
{
int i, j;
fin >> n >> capacity;
for (i = 1; i <= n; i++) {
fin >> w[i] >> p[i];
}
fout << KnapSack(n, capacity);
return 0;
}