#include <bits/stdc++.h>
#define ll long long
#define db long double
#define pll pair<ll,ll>
#define foru(i,a,b) for(ll i=(a);i<=(b);i++)
#define ford(i,a,b) for(ll i=(a);i>=(b);i--)
#define ALL(a) (a).begin(),(a).end()
#define ROUND(i) fixed<<setprecision(i)
#define fi first
#define se second
using namespace std;
ll n,m;
struct abc{
ll c,f,v;
bool operator<(abc&o){
if(f!=o.f)return f>o.f;
return v<o.v;
}
}t[4003];
ll MX=0;
ll dp[4003*55+10];
ll pd[4003*55+10];
signed main(){
ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
cin>>n;
ll s1=0,s2=0;
foru(i,1,n){
ll c,f,v;cin>>c>>f>>v;
s1+=c;
v=-v;
t[i]={c,f,v};
}
cin>>m;
foru(i,1,m){
ll c,f,v;cin>>c>>f>>v;
s2+=c;
c=-c;
t[i+n]={c,f,v};
}
MX=max(s1,s2);
sort(t+1,t+n+m+1);
memset(dp,-0x3f,sizeof(dp));
dp[0]=0;
foru(i,1,n+m){
foru(j,0,MX)pd[j]=dp[j];
foru(j,0,MX){
if(0<=j-t[i].c&&j-t[i].c<=MX&&pd[j-t[i].c]>-1e17)
dp[j]=max(dp[j],pd[j-t[i].c]+t[i].v);
}
}
ll res=0;
foru(i,0,MX)res=max(res,dp[i]);
cout<<res;
return 0;
}
| # | 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... |