#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define FOR(i , a , b) for(int i = a ; i <= b ; i++)
#define FAST ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
struct Order{
ll cores , f , cost;
};
bool cmp(const Order &a , const Order &b){
if(a.f == b.f) return a.cost < b.cost;
return a.f > b.f;
}
int main(){
FAST;
int n;
cin >> n;
vector<Order> v;
FOR(i , 0 , n - 1){
Order a;
cin >> a.cores >> a.f >> a.cost;
//a.cost = -a.cost;
v.push_back(a);
}
int m;
cin >> m;
FOR(i , 0 , m - 1){
Order a;
cin >> a.cores >> a.f >> a.cost;
//a.cores = -a.cores;
v.push_back(a);
}
sort(v.begin() , v.end() , cmp);
vector<ll> dp((int) 1e5 + 55);
int k = dp.size();
FOR(i , 0 , k - 1) dp[i] = -1e18;
dp[0] = 0;
for(auto x : v){
// if(x.cores > 0){
for(int i = k - 1 ; i >= 0 ; i--){
if(i - x.cores >= 0) dp[i] = max(dp[i] , dp[i - x.cores] - x.cost);
}
//}
//else{
FOR(i , 0 , k - 1){
if(i + x.cores >= dp.size()) continue;
dp[i] = max(dp[i] , dp[i + x.cores] + x.cost);
}
//}
}
ll ans = 0;
FOR(i , 0 , k - 1) ans = max(ans , dp[i]);
cout << ans;
}
# | 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... |