#include <bits/stdc++.h>
using namespace std;
#define yes cout<<"YES"<<'\n'
#define no cout<<"NO"<<'\n'
#define si size()
#define fi first
#define se second
#define ll long long
#define sr sort
#define pb push_back
const ll MAXN=1e5+5,MOD=1e9+7;
ll n,m,j,k,p,i,f,dem,ans,t,l,r=1,dp[MAXN],prefix[MAXN];
struct huy{
ll cnt,fast,cost,id;
};
bool cmp(huy x,huy y){
return (x.fast>y.fast||(x.fast==y.fast&&x.cost<y.cost));
}
huy a[MAXN];
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);cout.tie(0);
// freopen("test.INP","r",stdin);
// freopen("test.OUT","w",stdout);
cin>>n;
for(i=1;i<=n;i++){
cin>>a[i].cnt>>a[i].fast>>a[i].cost;
a[i].id=i;
}
cin>>m;
for(i=n+1;i<=n+m;i++){
cin>>a[i].cnt>>a[i].fast>>a[i].cost;
a[i].id=i;
}
for(i=1;i<=MAXN-5;i++)
dp[i]=-1e15;
sort(a+1,a+n+m+1,cmp);
ll dem=0;
for(i=1;i<=n+m;i++){
if(a[i].id<=n){
for(j=dem;j>=0;j--){
dp[j+a[i].cnt]=max(dp[j+a[i].cnt],dp[j]-a[i].cost);
}
dem+=a[i].cnt;
}
else{
for(j=a[i].cnt;j<=dem;j++)
dp[j-a[i].cnt]=max(dp[j-a[i].cnt],dp[j]+a[i].cost);
}
}
cout<<*max_element(dp,dp+MAXN-5+1);
}
# | 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... |