Submission #684844

#TimeUsernameProblemLanguageResultExecution timeMemory
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...