#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define re exit(0);
const int maxn = 2009;
int n,m;
struct core {
int number,frame,cost;
bool operator < (const core & other) {
return frame > other.frame;
}
} shop[maxn],customer[maxn];
int currmax;
ll dp[59 * maxn];
//dp i j: xet den i, dang co j core thi max cost la bn
void update(int changequan,int changecost) {
if (changequan >= 0) {
currmax += changequan;
for (int i = currmax;i >= changequan;i--) dp[i] = max(dp[i],dp[i - changequan] + changecost);
} else {
for (int i = 0;i <= currmax;i++) dp[i] = max(dp[i],dp[i - changequan] + changecost);
}
// for (int i = 0;i <= currmax;i++) cout << dp[i] << " ";
// cout << '\n';
}
int main() {
ios_base::sync_with_stdio(0);cin.tie(nullptr);
cin >> n;
for (int i = 1;i <= n;i++) {
cin >> shop[i].number >> shop[i].frame >> shop[i].cost;
}
sort(shop + 1,shop + 1 + n);
cin >> m;
for (int i = 1;i <= m;i++) {
cin >> customer[i].number >> customer[i].frame >> customer[i].cost;
}
sort(customer + 1,customer + 1 + m);
// re;
memset(dp,-0x3f3f,sizeof(dp));
dp[0] = 0;
int pt = 0;
for (int i = 1;i <= m;i++) {
while (pt < n && shop[pt + 1].frame >= customer[i].frame) {
pt ++;
update(shop[pt].number,-shop[pt].cost);
}
update(-customer[i].number,customer[i].cost);
}
cout << *max_element(dp,dp + 1 + currmax);
}
/*
Aiming:
==
+++++***
+:::::-=*
------=
========== ================== --:--== ============--
========== ==-------=--:=--==== ---==++ ===========--====-=
==--======== ==--================= =:::-=+ ==============----====
==:-========= ===:=== ======= =::--=+ ======== ==--====
==--========== ==-:=== ======= -:::-:= ======= =======
==--:== ======= ==--=== ======= =-:::-= ======= =======
=-.-=== ======= ==-==== ======= *:::----* ======= =======
==--:== ======= ==-================== +-:::::-+ ====== =======
==-:-=== ======= ==--================ *=-:::::-= ======= =======
==---=============== ==--============= +--::---==* ====--= =======
===--================= ==:-=== =:-::::--=+ ====-=== =======
==.-=================== ==--=== =::::::---+ ====---== =========
==---== ======= ======= +-:---=====+ ==-===--==============
======= ======= ======= =-:::::::--=+ =--=-=============
======== ======= ======= =--::::::--=+ =============
***++++++++++*****
*/
| # | 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... |