제출 #1124791

#제출 시각아이디문제언어결과실행 시간메모리
1124791dwuyKnapsack (NOI18_knapsack)C++17
100 / 100
52 ms2888 KiB
#include <bits/stdc++.h> #define int long long using namespace std; const int MX = 2005; int S, n; int f[2005]; vector<pair<int, int>> G[2005]; int32_t main(){ ios_base::sync_with_stdio(false); cin.tie(0); cin >> S >> n; for(int i=1; i<=n; i++){ int v, w, k; cin >> v >> w >> k; G[w].push_back({v, k}); } for(int w=1; w<=S; w++){ sort(G[w].begin(), G[w].end(), greater<pair<int, int>>()); int lim = S/w; for(pair<int, int> p: G[w]){ int v, k; tie(v, k) = p; k = min(k, lim); lim -= k; for(int t=1; k>0; t=min(k, t<<1)){ int val = v*t; int wei = w*t; for(int j=S; j>=wei; j--){ f[j] = max(f[j], f[j-wei] + val); } k -= t; } } } cout << *max_element(f + 0, f + S + 1); return 0; }
#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...