제출 #1221431

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

#define ll long long

int main(){
  int kapasitas, barang; cin >> kapasitas >> barang;
  vector<int> harga(barang), berat(barang), stok(barang);
  vector<ll> 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;
      ll beratsemua = 1LL * quantitas * berat[i];
      ll hargatotal = 1LL * quantitas * harga[i];
      for(int k = kapasitas; k >= beratsemua; k--){
        dp[k] = max(dp[k], dp[k - beratsemua] + hargatotal);
      }
    }
  }
  cout << dp[kapasitas] << '\n';
}
#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...