Submission #1218105

#TimeUsernameProblemLanguageResultExecution timeMemory
1218105johuthaCloud Computing (CEOI18_clo)C++20
0 / 100
148 ms327680 KiB
#include <iostream>
#include <vector>

#define ll long long

using namespace std;

/*
Sample:

4
4 2200 700
2 1800 10
20 2550 9999
4 2000 750
3
1 1500 300
6 1900 1500
3 2400 4550
*/

const int C = 2000 * 50 + 1;

signed main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    
    int n;
    cin >> n;

    vector<pair<ll,ll>> transactions;
    for (int i = 0; i < n; i++)
    {
        int c, f, v;
        cin >> c >> f >> v;
        transactions.emplace_back(c, -v);
    }
    
    int m;
    cin >> m;
    for (int i = 0; i < m; i++)
    {
        int c, f, v;
        cin >> c >> f >> v;
        transactions.emplace_back(-c, v);
    }

    int N = n + m;

    vector<vector<ll>> dp(N + 1, vector<ll>(C, -1e18));
    dp[0][0] = 0;

    for (int i = 0; i < N; i++) for (int j = 0; j < C; j++)
    {
        dp[i + 1][j] = dp[i][j];
        if (j - transactions[i].first >= 0 && j - transactions[i].first < C)
            dp[i + 1][j] = max(dp[i+1][j], dp[i][j - transactions[i].first] + transactions[i].second);
    }

    ll ans = 0;
    for (auto j: dp[N]) ans = max(ans, j);

    cout << ans << "\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...