#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
struct item{
ll t,cs,cr,val;
};
ll n,m; vector<ll> dp; vector<item> items;
int main(){
cin >>n;
while(n--){
ll c,f,v; cin >>c>>f>>v;
items.push_back({0,c,f,v});
}cin >>m;
while(m--){
ll c,f,v; cin >>c>>f>>v;
items.push_back({1,c,f,v});
}sort(items.begin(), items.end(),[&](auto l,auto r){return l.cr==r.cr?l.t>r.t:l.cr<r.cr;});
auto upd=[&](vector<ll>& dp,ll i,ll profit){
while(dp.size()<=i) dp.push_back(-1e16);
if(dp[i]<profit) dp[i]=profit;
};
upd(dp,0,0);
for(auto [t,cs,cr,val]:items){
vector<ll> ndp=dp;
for(ll i=0;i<dp.size();++i){
upd(ndp,max(0LL,i+(t==0?-1:1)*cs),dp[i]+(t==0?-1:1)*val);
}dp = ndp;
}cout <<dp[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... |