#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e5+5;
const int INF=1e16+7;
int n,m,dp[N+5],ans;
vector <array <int,4>> vec;
bool cmp(array <int,4> x,array <int,4> y){
auto [c1,f1,v1,t1]=x;
auto [c2,f2,v2,t2]=y;
if(f1!=f2) return f1>f2;
else return t1<t2;
}
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0);
for(int i=1;i<N;i++) dp[i]=-INF;
cin >> n;
for(int i=1;i<=n;i++){
int c,f,v;
cin >> c >> f >> v;
vec.push_back({c,f,v,0});
}
cin >> m;
for(int i=1;i<=m;i++){
int c,f,v;
cin >> c >> f >> v;
vec.push_back({c,f,v,1});
}
sort(vec.begin(),vec.end(),cmp);
for(auto [c,f,v,t]:vec){
if(t==1){
for(int i=0;i<N;i++){
if(i+c<N) dp[i]=max(dp[i],dp[i+c]+v);
}
}
if(t==0){
for(int i=N-1;i>=0;i--){
if(i-c>=0) dp[i]=max(dp[i],dp[i-c]-v);
}
}
for(int i=0;i<N;i++) 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... |