#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |