#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
// Fungsi untuk menyelesaikan masalah knapsack 0/1
int knapsack(int kapasitas, const vector<int>& berat, const vector<int>& nilai) {
int n = berat.size();
vector<vector<int>> dp(n + 1, vector<int>(kapasitas + 1, 0));
for (int i = 1; i <= n; ++i) {
for (int w = 1; w <= kapasitas; ++w) {
if (berat[i - 1] <= w) {
dp[i][w] = max(nilai[i - 1] + dp[i - 1][w - berat[i - 1]], dp[i - 1][w]);
} else {
dp[i][w] = dp[i - 1][w];
}
}
}
return dp[n][kapasitas];
}
int main() {
// Data uji
vector<int> nilai = {60, 100, 120};
vector<int> berat = {10, 20, 30};
int kapasitas = 50;
// Menjalankan dan menampilkan hasil
int nilaiMaks = knapsack(kapasitas, berat, nilai);
cout << "Nilai maksimum dalam knapsack adalah: " << nilaiMaks << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCi8vIEZ1bmdzaSB1bnR1ayBtZW55ZWxlc2Fpa2FuIG1hc2FsYWgga25hcHNhY2sgMC8xCmludCBrbmFwc2FjayhpbnQga2FwYXNpdGFzLCBjb25zdCB2ZWN0b3I8aW50PiYgYmVyYXQsIGNvbnN0IHZlY3RvcjxpbnQ+JiBuaWxhaSkgewogICAgaW50IG4gPSBiZXJhdC5zaXplKCk7CiAgICB2ZWN0b3I8dmVjdG9yPGludD4+IGRwKG4gKyAxLCB2ZWN0b3I8aW50PihrYXBhc2l0YXMgKyAxLCAwKSk7CgogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgKytpKSB7CiAgICAgICAgZm9yIChpbnQgdyA9IDE7IHcgPD0ga2FwYXNpdGFzOyArK3cpIHsKICAgICAgICAgICAgaWYgKGJlcmF0W2kgLSAxXSA8PSB3KSB7CiAgICAgICAgICAgICAgICBkcFtpXVt3XSA9IG1heChuaWxhaVtpIC0gMV0gKyBkcFtpIC0gMV1bdyAtIGJlcmF0W2kgLSAxXV0sIGRwW2kgLSAxXVt3XSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBkcFtpXVt3XSA9IGRwW2kgLSAxXVt3XTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBkcFtuXVtrYXBhc2l0YXNdOwp9CgppbnQgbWFpbigpIHsKICAgIC8vIERhdGEgdWppCiAgICB2ZWN0b3I8aW50PiBuaWxhaSA9IHs2MCwgMTAwLCAxMjB9OwogICAgdmVjdG9yPGludD4gYmVyYXQgPSB7MTAsIDIwLCAzMH07CiAgICBpbnQga2FwYXNpdGFzID0gNTA7CgogICAgLy8gTWVuamFsYW5rYW4gZGFuIG1lbmFtcGlsa2FuIGhhc2lsCiAgICBpbnQgbmlsYWlNYWtzID0ga25hcHNhY2soa2FwYXNpdGFzLCBiZXJhdCwgbmlsYWkpOwogICAgY291dCA8PCAiTmlsYWkgbWFrc2ltdW0gZGFsYW0ga25hcHNhY2sgYWRhbGFoOiAiIDw8IG5pbGFpTWFrcyA8PCBlbmRsOwoKICAgIHJldHVybiAwOwp9Cg==