제출 #1268122

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

#define int long long 

struct Barang {
  int v, w, k;
};

struct Nb {
  int v, w;
};

signed main() {
  ios::sync_with_stdio(0); cin.tie(0);

  int s, n; cin >> s >> n;
  vector<Barang> bar(n);

  for (auto &[v, w, k]: bar) {
    cin >> v >> w >> k;
  }
  
  vector<Nb> nv;
  for (auto &[v, w, k]: bar) {
    int i=1;
    while (k > 0) {
      int now = min(i, k);
      
      nv.push_back({v * now, w * now});
      
      k -= now;
      i <<= 1;
    }
  }
  
  vector<int> dp(s + 1);
  dp[0] = 0;

  for (auto &[v, w] : nv) {
    for (int i=s; i>=w; --i) {
      dp[i] = max(dp[i], dp[i-w] + v);
    }
  }
  
  cout << dp[s];
}
#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...