제출 #483549

#제출 시각아이디문제언어결과실행 시간메모리
483549speedyArdaKnapsack (NOI18_knapsack)C++14
49 / 100
112 ms262148 KiB
#include "bits/stdc++.h" using namespace std; int main() { int s, n, va, we, k; cin >> s >> n; if(n == 1) // Subtask 1; { cin >> va >> we >> k; cout << min((s / we) * va, k * va); } else //Subtask 2 - 3; { vector<int> p; vector<int> w; for(int i = 0; i < n; i++) { cin >> va >> we >> k; while(k--) { p.push_back(va); w.push_back(we); } } int k = p.size() + 1; long long dp[k][s + 1]; for(int i = 0; i <= s; i++) dp[0][i] = 0; for(int i = 1; i <= k - 1; i++) { for(int a = 0; a <= s; a++) { if(a - w[i - 1] >= 0) dp[i][a] = max(dp[i - 1][a], dp[i - 1][a - w[i -1]] + p[i - 1]); else dp[i][a] = dp[i - 1][a]; } } cout << dp[k - 1][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...