제출 #1306545

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

int main() {
    long long s, n; cin >> s >> n;
    vector<long long> w(n+1), p(n+1),k(n+1);
    for (long long i = 1; i <= n; i++) {
        cin >> p[i] >> w[i] >> k[i];
    }

    vector<vector<long long>> dp(n+1, vector<long long>(s+1, -INT_MAX));
    for (long long i = 0; i <= s; i++) {
        dp[0][i] = 0;
    }
    for (long long i = 1; i <= n; i++) {
        dp[i][0] = 0;
    }
    for (long long i = 1; i <= n; i++) {
        for (long long c = 1; c <= s; ++c) {
            dp[i][c] = dp[i-1][c];
            for (long long l = min(k[i], c / w[i]); l >= 1; --l) {
                dp[i][c] = max(dp[i][c], dp[i-1][c - l * w[i]] + l * p[i]);
            }
        }
    }
    cout << *std::max_element(dp.back().begin(), dp.back().end()) << endl;
    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...