#include<bits/stdc++.h>
#define ll long long
#define F first
#define S second
using namespace std;
ll const N=3e5;
ll a[N],b[N];
ll la[N],lb[N];
ll ra[N],rb[N];
ll n,m;
ll dp[2200][2220];
ll solve(ll i,ll j,ll s){
if(i>n || j>m)
return 0;
if(dp[i][j]!=-1)
return dp[i][j];
ll xa=0,xb=0;
if(i<n){
if(s+a[i]<=la[i]){
xa=ra[i];
}
xa+=solve(i+1,j,s+a[i]);
}
if(j<m){
if(j<m && s+b[j]<=lb[j]){
xb=rb[j];
}
xb+=solve(i,j+1,s+b[j]);
}
dp[i][j]=max(xa,xb);
return dp[i][j];
}
int main(){
memset(dp,-1,sizeof(dp));
cin>>n>>m;
for(ll i=0;i<n;i++){
cin>>a[i]>>la[i]>>ra[i];
}
for(ll i=0;i<m;i++){
cin>>b[i]>>lb[i]>>rb[i];
}
cout<<solve(0,0,0)<<"\n";
return 0;
}
/*
2 1
1 5 5
2 3 5
1 6 5
*/
# | 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... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |