#include <bits/stdc++.h>
using namespace std;
#define int long long
struct item{
int c, f, v;
};
bool cmp(item x, item y){
return (x.f == y.f ? x.v < y.v : x.f > y.f);
}
vector<item> a;
signed main(){
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
int n; cin >> n;
int sumc = 0;
for(int i = 0; i < n; i++){
int c, f, v; cin >> c >> f >> v;
a.push_back({c, f, -v});
sumc += c;
}
int m; cin >> m;
for(int i = 0; i < m; i++){
int c, f, v; cin >> c >> f >> v;
a.push_back({-c, f, v});
}
sort(a.begin(), a.end(), cmp);
vector<int> dp(sumc + 1, -1e18);
dp[0] = 0;
for(auto [c, f, v]: a){
vector<int> ndp = dp;
for(int i = 0; i <= sumc; i++){
if(0 <= i - c && i - c <= sumc && dp[i - c] != -1e18) ndp[i] = max(ndp[i], dp[i - c] + v);
}
dp = ndp;
}
cout << *max_element(dp.begin(), dp.end());
}
# | 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... |