Submission #1221407

#TimeUsernameProblemLanguageResultExecution timeMemory
1221407mifzal5331Knapsack (NOI18_knapsack)C++20
37 / 100
1 ms328 KiB
#include<bits/stdc++.h>
using namespace std;

int main(){
  int kapasitas,barang; cin>>kapasitas>>barang;
  vector<int> harga(barang),berat(barang),stok(barang);
  vector<int> dp(kapasitas+1,0);
  for(int i=0;i<barang;i++){
    cin>>harga[i]>>berat[i]>>stok[i];
  }
  for(int i=0;i<barang;i++){
    int semua=stok[i];
    for(int j=1;semua>0;j <<= 1){
      int quantitas=min(semua,j);
      semua-=quantitas;
      int beratsemua=quantitas*berat[i],hargatotal=quantitas*harga[i];
      for(int k=kapasitas;k>=beratsemua;k--){
        dp[k]=max(dp[k],dp[k-beratsemua]+hargatotal);
      }
    }
  }
  cout<<dp[kapasitas];
}

//dp[j]=harga termahal dengan maksimal j kg kapasitas
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...