Submission #1020177

#TimeUsernameProblemLanguageResultExecution timeMemory
1020177ArthuroWichKnapsack (NOI18_knapsack)C++17
0 / 100
1 ms604 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long int
void solve() {
    int s, n;
    cin >> s >> n;
    vector<int> dp(s+1, -1);
    dp[0] = 0;
    for (int i = 0; i < n; i++) {
        int v, w, k, l;
        cin >> v >> w >> k;
        while(k > 0) {
            l = log2(k);
            k -= (1<<v);
            for (int x = 0; x <= l; x++) {
                for (int j = s; j >= 0; j--) {
                    if (j-(1<<x)*w < 0) {
                        break;
                    }
                    if (dp[j-(1<<x)*w] != -1) {
                        dp[j] = max(dp[j], dp[j-(1<<x)*w]+(1<<x)*v);
                    } 
                }
            }
        }
    }
    int ans = 0;
    for (int i : dp) {
        ans = max(ans, i);
    }
    cout << ans << endl;
}
int32_t main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    int t;
    t = 1;
    while(t--) {
        solve();
    }
}
#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...