Pagini recente » Istoria paginii runda/preoni-2009-runda1 | Cod sursa (job #2377599) | tema | Istoria paginii runda/party | Cod sursa (job #2206403)
#include <cstdio>
#include <iostream>
#define NMAX 5000
using namespace std;
typedef struct {
int weight, value;
} THING;
bool used[NMAX];
int n, W;
THING things[NMAX];
int bruteForce(int remainingItems, int remainingWeight) {
if (remainingWeight < 0) return -500000000;
if (0 == remainingItems) return 0;
int ans = 0;
for (int it = 0; it < n; ++it) {
if (!used[it]) {
used[it] = true;
ans = max(ans, things[it].value + bruteForce(remainingItems - 1, remainingWeight - things[it].weight));
used[it] = false;
ans = max(ans, bruteForce(remainingItems - 1, remainingWeight));
}
}
return ans;
}
int main() {
freopen("rucsac.in", "r", stdin);
freopen("rucsac.out", "w", stdout);
cin >> n >> W;
for (int it = 0; it < n; ++it) {
cin >> things[it].weight >> things[it].value;
}
cout << bruteForce(n, W);
return 0;
}