제출 #684844

#제출 시각아이디문제언어결과실행 시간메모리
684844adrilenKnapsack (NOI18_knapsack)C++17
73 / 100
1083 ms3920 KiB
#include<bits/stdc++.h> using namespace std; using ll = long long; using pii = pair<ll,ll>; constexpr int maxs = 2e3 + 1; pii dp[maxs]; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int s, n; cin >> s >> n; vector<array<ll, 3>> items(n); for (auto &p : items) cin >> p[0] >> p[1] >> p[2]; // v w k for (const auto &item : items) { for (int p = 0; p <= s; p++) { for (int k = 1; k <= item[2]; k++) { if (p + k * item[1] <= s) { dp[p + k * item[1]].second = max(dp[p + k * item[1]].second, dp[p].first + k * item[0]); } else break; } dp[p].first = dp[p].second; } } //for (int i = 0; i <= s; i++) cout << dp[i].first << "\n"; cout << (*max_element(begin(dp), end(dp))).first << "\n"; } /* for position: for weight: pos + w = max(pos + value) */
#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...