Submission #1259734

#TimeUsernameProblemLanguageResultExecution timeMemory
1259734vuvietCloud Computing (CEOI18_clo)C++20
36 / 100
159 ms327680 KiB
#include <bits/stdc++.h>
using namespace std;

struct Deal {
    int c, f;
    long long v;
};

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

    int n; cin >> n;
    vector<Deal> a;
    int maxc = 0;

    for (int i = 0; i < n; i++) {
        Deal d;
        cin >> d.c >> d.f >> d.v;
        d.v = -d.v;      // bán máy: chi phí âm
        a.push_back(d);
        maxc += d.c;
    }

    int m; cin >> m;
    for (int i = 0; i < m; i++) {
        Deal d;
        cin >> d.c >> d.f >> d.v;
        d.c = -d.c;      // đơn hàng: cores âm
        a.push_back(d);
    }

    sort(a.begin(), a.end(), [](auto &x, auto &y) {
        return (x.f != y.f) ? x.f > y.f : x.v < y.v;
    });

    const long long NEG = -4e18;
    int sz = a.size();

    vector<vector<long long>> dp(sz + 1, vector<long long>(maxc + 1, NEG));
    dp[0][0] = 0;

    for (int i = 1; i <= sz; i++) {
        for (int c = 0; c <= maxc; c++) {
            dp[i][c] = dp[i-1][c]; // không dùng giao dịch i
            int p = c - a[i-1].c;
            if (p >= 0 && p <= maxc && dp[i-1][p] != NEG) {
                dp[i][c] = max(dp[i][c], dp[i-1][p] + a[i-1].v);
            }
        }
    }

    cout << *max_element(dp[sz].begin(), dp[sz].end()) << "\n";
}
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...