제출 #1259870

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

int main() {
    ios::sync_with_stdio(0); 
    cin.tie(0);

    long long w, n; 
    cin >> w >> n;

    vector<priority_queue<pair<long long, long long>>> a(w + 1);

    for (long long i = 0; i < n; i++) {
        long long v, x, y; 
        cin >> v >> y >> x;
        a[y].push({v, x});
    }

    vector<long long> d(w + 1);

    for (long long i = 1; i <= w; i++) {
        long long f = w / i;
        while (!a[i].empty() && f) {
            auto [v, x] = a[i].top(); 
            a[i].pop();
            if (x > f) x = f; 
            f -= x;
            for (long long j = 0; j < x; j++) {
                for (long long k = w; k >= i; k--) {
                    d[k] = max(d[k], d[k - i] + v);
                }
            }
        }
    }

    cout << *max_element(d.begin(), d.end());
}
#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...