제출 #1367674

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

#define int long long

signed main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

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

    vector<vector<int>> bucket(S + 1);

    for (int i = 0; i < N; i++) {
        int v, w, k;
        cin >> v >> w >> k;

        int cnt = min(k, S / w);

        for (int j = 0; j < cnt; j++) {
            bucket[w].push_back(v);
        }
    }

    vector<pair<int,int>> items;

    for (int w = 1; w <= S; w++) {
        auto &vec = bucket[w];

        sort(vec.rbegin(), vec.rend());

        int take = min((int)vec.size(), S / w);

        for (int i = 0; i < take; i++) {
            items.push_back({w, vec[i]});
        }
    }

    vector<int> dp(S + 1);

    for (auto [w, v] : items) {
        for (int j = S; j >= w; j--) {
            dp[j] = max(dp[j], dp[j - w] + v);
        }
    }

    cout << *max_element(dp.begin(), dp.end());

    return 0;
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…