Cod sursa(job #2206403)

Utilizator AplayLazar Laurentiu Aplay Data 22 mai 2018 17:02:00
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#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;
}