#include<bits/stdc++.h>
using namespace std;
long long n,m;
constexpr long long ML=1e18;
constexpr long long MN=2e3+20;
struct danie
{
long long cza;
long long lim;
long long pun;
};
long long DP[MN][MN];
long long akczas[MN][MN];
int main()
{
cin>>n>>m;
vector<danie> vea,veb;
for(int i=0; i<n; i++)
{
danie he;
cin>>he.cza>>he.lim>>he.pun;
vea.push_back(he);
}
for(int i=0; i<m; i++)
{
danie he;
cin>>he.cza>>he.lim>>he.pun;
veb.push_back(he);
}
for(int i=0; i<MN; i++) fill(DP[i],DP[i]+MN,-ML);
DP[0][0]=0;
for(int i=0; i<n+1; i++)
{
for(int j=0; j<m+1; j++)
{
if(i!=0)
{
akczas[i][j]=akczas[i-1][j]+vea[i-1].cza;
long long tim=akczas[i][j];
long long ost=DP[i-1][j];
if(tim<=vea[i-1].lim) ost+=vea[i-1].pun;
DP[i][j]=max(DP[i][j],ost);
}
if(j!=0)
{
akczas[i][j]=akczas[i][j-1]+veb[j-1].cza;
long long tim=akczas[i][j];
long long ost=DP[i][j-1];
if(tim<=veb[j-1].lim) ost+=veb[j-1].pun;
DP[i][j]=max(DP[i][j],ost);
}
}
}
cout<<DP[n][m]<<"\n";
}
# | 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... |