Submission #1292333

#TimeUsernameProblemLanguageResultExecution timeMemory
1292333duongquanghai08Knapsack (NOI18_knapsack)C++20
100 / 100
38 ms1904 KiB
#include <bits/stdc++.h> #define fi first #define se second #define pii pair<int, int> using namespace std; const int N = 2002; int S, n; vector<pii> A[N], V; long long dp[N]; void Solve() { cin >> S >> n; for(int i = 1; i <= n; i++) { int v, w, k; cin >> v >> w >> k; A[w].push_back({v, k}); } for(int i = 1; i <= S; i++) { int cnt = S / i; sort(A[i].begin(), A[i].end(), greater<pii>()); for(auto [v, k] : A[i]) { for(int __ = 1; __ <= min(cnt, k); __++) V.push_back({i, v}); cnt -= min(cnt, k); if(!cnt) break; } } for(auto [w, v] : V) { for(int i = S; i >= w; i--) { dp[i] = max(dp[i], dp[i - w] + v); } } cout << dp[S]; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); Solve(); }
#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...