제출 #1221411

#제출 시각아이디문제언어결과실행 시간메모리
1221411mifzal5331Knapsack (NOI18_knapsack)C++20
37 / 100
1 ms328 KiB
#include<bits/stdc++.h>
using namespace std;

int main(){
  long long kapasitas,barang; cin>>kapasitas>>barang;
  vector<int> harga(barang),berat(barang),stok(barang);
  vector<long long> 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;
      long long 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...