Submission #1219495

#TimeUsernameProblemLanguageResultExecution timeMemory
1219495prado.joaoKnapsack (NOI18_knapsack)C++20
73 / 100
1095 ms1864 KiB
#include <iostream>
using namespace std;

const int MAXN = 100000;

int V[MAXN];
int W[MAXN];
int K[MAXN];

int dp[2][MAXN + 1];

int main() {

    int S, N;
    cin >> S >> N;

    for (int i = 0; i < N; i++) {
        int Vi, Wi, Ki;
        cin >> Vi >> Wi >> Ki;
        V[i] = Vi;
        W[i] = Wi;
        K[i] = Ki;
    }

    int prev = 0, act = 1;
    for (int c = 0; c <= N; c++) {
        dp[prev][c] = 0;
    }

    for (int i = 0; i < N; i++) {
        for (int j = 0; j <= S; j++) {
            dp[act][j] = dp[prev][j];
            for (int qty = 1; qty <= K[i] && qty * W[i] <= j; qty++) {
                dp[act][j] = max(dp[act][j],
                               dp[prev][j - qty * W[i]] + qty * V[i]);
            }
        }
        swap(act, prev);
    }

    cout << dp[prev][S];
    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...