#include <iostream>
#include <vector>
using namespace std;
int main( ) {
int n, kapasitas;
cout << "Jumlah barang: " ;
cin >> n;
vector< int > bobot( n) , nilai( n) ;
cout << "Masukkan bobot barang:\n " ;
for ( int i = 0 ; i < n; i++ )
cin >> bobot[ i] ;
cout << "Masukkan nilai barang:\n " ;
for ( int i = 0 ; i < n; i++ )
cin >> nilai[ i] ;
cout << "Masukkan kapasitas maksimum knapsack: " ;
cin >> kapasitas;
// Encoding biner representasi solusi
vector< int > kode( n) ;
cout << "Masukkan representasi biner solusi (0/1):\n " ;
for ( int i = 0 ; i < n; i++ )
cin >> kode[ i] ;
int totalBobot = 0 , totalNilai = 0 ;
// Hitung total berdasarkan encoding
for ( int i = 0 ; i < n; i++ ) {
if ( kode[ i] == 1 ) {
totalBobot + = bobot[ i] ;
totalNilai + = nilai[ i] ;
}
}
// Output hasil
cout << "\n === HASIL ===" << endl;
cout << "Total Bobot : " << totalBobot << endl;
cout << "Total Nilai : " << totalNilai << endl;
if ( totalBobot > kapasitas)
cout << "Status : TIDAK VALID (Melebihi kapasitas)\n " ;
else
cout << "Status : VALID (Tidak melebihi kapasitas)\n " ;
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKSB7CiAgICBpbnQgbiwga2FwYXNpdGFzOwogICAgY291dCA8PCAiSnVtbGFoIGJhcmFuZzogIjsKICAgIGNpbiA+PiBuOwoKICAgIHZlY3RvcjxpbnQ+IGJvYm90KG4pLCBuaWxhaShuKTsKCiAgICBjb3V0IDw8ICJNYXN1a2thbiBib2JvdCBiYXJhbmc6XG4iOwogICAgZm9yKGludCBpID0gMDsgaSA8IG47IGkrKykKICAgICAgICBjaW4gPj4gYm9ib3RbaV07CgogICAgY291dCA8PCAiTWFzdWtrYW4gbmlsYWkgYmFyYW5nOlxuIjsKICAgIGZvcihpbnQgaSA9IDA7IGkgPCBuOyBpKyspCiAgICAgICAgY2luID4+IG5pbGFpW2ldOwoKICAgIGNvdXQgPDwgIk1hc3Vra2FuIGthcGFzaXRhcyBtYWtzaW11bSBrbmFwc2FjazogIjsKICAgIGNpbiA+PiBrYXBhc2l0YXM7CgogICAgLy8gRW5jb2RpbmcgYmluZXIgcmVwcmVzZW50YXNpIHNvbHVzaQogICAgdmVjdG9yPGludD4ga29kZShuKTsKICAgIGNvdXQgPDwgIk1hc3Vra2FuIHJlcHJlc2VudGFzaSBiaW5lciBzb2x1c2kgKDAvMSk6XG4iOwogICAgZm9yKGludCBpID0gMDsgaSA8IG47IGkrKykKICAgICAgICBjaW4gPj4ga29kZVtpXTsKCiAgICBpbnQgdG90YWxCb2JvdCA9IDAsIHRvdGFsTmlsYWkgPSAwOwoKICAgIC8vIEhpdHVuZyB0b3RhbCBiZXJkYXNhcmthbiBlbmNvZGluZwogICAgZm9yKGludCBpID0gMDsgaSA8IG47IGkrKyl7CiAgICAgICAgaWYoa29kZVtpXSA9PSAxKXsKICAgICAgICAgICAgdG90YWxCb2JvdCArPSBib2JvdFtpXTsKICAgICAgICAgICAgdG90YWxOaWxhaSArPSBuaWxhaVtpXTsKICAgICAgICB9CiAgICB9CgogICAgLy8gT3V0cHV0IGhhc2lsCiAgICBjb3V0IDw8ICJcbj09PSBIQVNJTCA9PT0iIDw8IGVuZGw7CiAgICBjb3V0IDw8ICJUb3RhbCBCb2JvdCAgOiAiIDw8IHRvdGFsQm9ib3QgPDwgZW5kbDsKICAgIGNvdXQgPDwgIlRvdGFsIE5pbGFpICA6ICIgPDwgdG90YWxOaWxhaSA8PCBlbmRsOwoKICAgIGlmKHRvdGFsQm9ib3QgPiBrYXBhc2l0YXMpCiAgICAgICAgY291dCA8PCAiU3RhdHVzICAgICAgIDogVElEQUsgVkFMSUQgKE1lbGViaWhpIGthcGFzaXRhcylcbiI7CiAgICBlbHNlCiAgICAgICAgY291dCA8PCAiU3RhdHVzICAgICAgIDogVkFMSUQgKFRpZGFrIG1lbGViaWhpIGthcGFzaXRhcylcbiI7CgogICAgcmV0dXJuIDA7Cn0K