Submission #1243531

#TimeUsernameProblemLanguageResultExecution timeMemory
1243531firegirlwaterboyCloud Computing (CEOI18_clo)C++20
100 / 100
362 ms2220 KiB
#include <bits/stdc++.h>

using namespace std;
typedef long long ll;

const int MAX = 1e5 + 5, MOD = 1e9 + 7, MAXL = 61;
const ll INF = 1e18;

void solve() {
    int n;
    cin >> n;
    vector<vector<ll>> info;
    for (int i = 0; i < n; i++) {
        ll c, f, v;
        cin >> c >> f >> v;
        info.push_back({f, v, c});
    }
    int m;
    cin >> m;
    for (int i = 0; i < m; i++) {
        ll c, f, v;
        cin >> c >> f >> v;
        info.push_back({f, -v, -c});
    }
    sort(info.begin(), info.end(), greater<vector<ll>>());
    ll dp[MAX][2];
    for (int i = 1; i < MAX; i++) {
        dp[i][1] = -INF;
    }
    dp[0][1] = 0;
    int curr = 0;
    for (int i = 0; i < info.size(); i++) {
        for (int j = 0; j < MAX; j++) {
            dp[j][curr] = dp[j][curr ^ 1];
            if (j - info[i][2] >= 0 && j - info[i][2] < MAX) {
                dp[j][curr] =
                    max(dp[j][curr], dp[j - info[i][2]][curr ^ 1] - info[i][1]);
            }
        }
        curr ^= 1;
    }
    curr ^= 1;
    ll ans = 0;
    for (int i = 0; i < MAX; i++) {
        ans = max(ans, dp[i][curr]);
    }
    cout << ans << "\n";
}

int main() {
    ios::sync_with_stdio(false);
    cin.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...