Submission #1182418

#TimeUsernameProblemLanguageResultExecution timeMemory
1182418ducanh0811Cloud Computing (CEOI18_clo)C++20
72 / 100
459 ms2052 KiB
#include <bits/stdc++.h>
using namespace std;

#define MAXN 4002
#define MAXC 100005

int n, m;

struct event{
    int c, f, v;
};

event C[MAXN];
long long dp[MAXC];
long long DP[MAXC];

void solve(){
    cin >> n;
    int sumcores = 0;
    for (int i = 1; i <= n; ++i){
        cin >> C[i].c >> C[i].f >> C[i].v;
        C[i].v = -C[i].v;
        sumcores += C[i].c;
    }
    cin >> m;
    for (int i = n + 1; i <= n + m; ++i){
        cin >> C[i].c >> C[i].f >> C[i].v;
        C[i].c = -C[i].c;
    }
    sort(C + 1, C + 1 + n + m, [](const event &a, const event &b){
        return a.f > b.f;
    });
    memset(dp, -0x3f, sizeof dp);
    memset(DP, -0x3f, sizeof DP);
    dp[0] = DP[0] = 0;
    for (int i = 1; i <= n + m; ++i){
        for (int j = 0; j <= sumcores; ++j){
            int prev = j - C[i].c;
            if (0 <= prev && prev <= sumcores)
                DP[j] = max(DP[j], dp[prev] + C[i].v);
        }
        for (int j = 0; j <= sumcores; ++j){
            dp[j] = DP[j];
        }
    }
    long long res = -1e16;
    for (int i = 0; i <= sumcores; ++i) res = max(res, dp[i]);
    cout << res;
}

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr); cout.tie(nullptr);
    solve();
    return 0;
}
#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...