#pragma GCC optimize("O5,unroll-loops,inline,fast-math")
#pragma GCC target("avx2,bmi,bmi2,popcnt,lzcnt")
#include <bits/stdc++.h>
#define exoworldgd cin.tie(0)->sync_with_stdio(0), cout.tie(0)
#define int long long
using namespace std;
const int N=100005,inf=1e18;
int n,m,ans=0,dp[2][N],p=0,c=1;
tuple<int,int,int> t[4005];
signed main(void) {
exoworldgd;
cin >> n;
for (int i=0,u,v,w; i<n; i++) cin >> u >> v >> w,t[i]={v,u,-w};
cin >> m;
for (int i=0,u,v,w; i<m; i++) cin >> u >> v >> w,t[n+i]={v,-u,w};
sort(t,t+n+m,greater<tuple<int,int,int>>());
for (int i=0; i<N; i++) dp[0][i]=dp[1][i]=-inf;
dp[0][0]=0;
for (int i=0; i<n+m; i++) {
auto [f,a,v]=t[i];
for (int j=0; j<N; j++) dp[c][j]=max(dp[c][j],dp[p][j]);
for (int j=0; j<N; j++) {
if (j+a>=N || j<-a) continue;
dp[c][j+a]=max({dp[c][j+a],dp[p][j]+v,dp[p][j+a]});
}
swap(p,c);
for (int j=0; j<N; j++) dp[c][j]=-inf;
}
for (int i=0; i<N; i++) ans=max(ans,dp[p][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... |