#include <bits/stdc++.h>
using namespace std;
int main() {
int n, W;
cout << "Masukkan jumlah item: ";
cin >> n;
cout << "Masukkan kapasitas tas: ";
cin >> W;
vector<int> nilai(n), berat(n);
cout << "Masukkan nilai dan berat tiap item (nilai berat):\n";
for (int i = 0; i < n; i++) cin >> nilai[i] >> berat[i];
vector<int> dp(W + 1, 0);
// Proses knapsack dengan DP (1D)
for (int i = 0; i < n; i++)
for (int j = W; j >= berat[i]; j--)
dp[j] = max(dp[j], dp[j - berat[i]] + nilai[i]);
cout << "\nNilai maksimum yang dapat dibawa = " << dp[W] << endl;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKICAgIGludCBuLCBXOwogICAgY291dCA8PCAiTWFzdWtrYW4ganVtbGFoIGl0ZW06ICI7CiAgICBjaW4gPj4gbjsKICAgIGNvdXQgPDwgIk1hc3Vra2FuIGthcGFzaXRhcyB0YXM6ICI7CiAgICBjaW4gPj4gVzsKCiAgICB2ZWN0b3I8aW50PiBuaWxhaShuKSwgYmVyYXQobik7CiAgICBjb3V0IDw8ICJNYXN1a2thbiBuaWxhaSBkYW4gYmVyYXQgdGlhcCBpdGVtIChuaWxhaSBiZXJhdCk6XG4iOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIGNpbiA+PiBuaWxhaVtpXSA+PiBiZXJhdFtpXTsKCiAgICB2ZWN0b3I8aW50PiBkcChXICsgMSwgMCk7CgogICAgLy8gUHJvc2VzIGtuYXBzYWNrIGRlbmdhbiBEUCAoMUQpCiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykKICAgICAgICBmb3IgKGludCBqID0gVzsgaiA+PSBiZXJhdFtpXTsgai0tKQogICAgICAgICAgICBkcFtqXSA9IG1heChkcFtqXSwgZHBbaiAtIGJlcmF0W2ldXSArIG5pbGFpW2ldKTsKCiAgICBjb3V0IDw8ICJcbk5pbGFpIG1ha3NpbXVtIHlhbmcgZGFwYXQgZGliYXdhID0gIiA8PCBkcFtXXSA8PCBlbmRsOwogICAgcmV0dXJuIDA7Cn0K