#include<bits/stdc++.h>
using namespace std;
struct node { int c,f,v; };
bool comp(node a,node b) { return a.f>b.f; }
const int MAXN=2024;
const long long INF=1e18;
long long dp[MAXN*55];
node A[MAXN],B[MAXN];
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n;
cin>>n;
for(int i=1;i<=n;i++) cin>>A[i].c>>A[i].f>>A[i].v;
int m;
cin>>m;
for(int i=1;i<=m;i++) cin>>B[i].c>>B[i].f>>B[i].v;
sort(A+1,A+n+1,comp);
sort(B+1,B+m+1,comp);
for(int i=1;i<=n*55;i++) dp[i]=-INF;
int r=1;
for(int i=1;i<=m;i++)
{
while(r<=n&&A[r].f>=B[i].f)
{
for(int j=n*55-A[r].c;j+1;j--) dp[j+A[r].c]=max(dp[j+A[r].c],dp[j]-A[r].v);
r++;
}
for(int j=0;j<=n*55-B[i].c;j++) dp[j]=max(dp[j],dp[j+B[i].c]+B[i].v);
}
long long ans=0;
for(int i=0;i<=n*55;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... |