#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 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... |