#include <bits/stdc++.h>
using namespace std;
int main() {
int n,m;
cin>>n>>m;
vector<long long> a(n+1);
vector<long long> s(n+1);
vector<long long> p(n+1);
vector<long long> b(m+1);
vector<long long> t(m+1);
vector<long long> q(m+1);
vector<long long> pre(n+1,0);
vector<long long> suf(m+1,0);
for (int i = 1; i <= n; ++i)
{
cin>>a[i]>>s[i]>>p[i];
pre[i]=a[i]+pre[i-1];
}
for (int i = 1; i <= m; ++i)
{
cin>>b[i]>>t[i]>>q[i];
suf[i]=b[i]+suf[i-1];
}
long long dp[n+1][m+1];
memset(dp,0,sizeof dp);
for (int i = 0; i <= n; ++i)
{
for (int j = 0; j <= m; ++j)
{
if(i==0&&j==0) continue;
if(i>0){
if(pre[i]+suf[j] <= s[i]) dp[i][j]=max(dp[i][j],dp[i-1][j]+p[i]);
else dp[i][j]=max(dp[i][j],dp[i-1][j]);
}
if(j>0){
if(pre[i]+suf[j] <= t[j]) dp[i][j]=max(dp[i][j],dp[i][j-1]+q[j]);
else dp[i][j]=max(dp[i][j],dp[i][j-1]);
}
}
}
cout <<dp[n][m]<<endl;
}
# | 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... |