#include <bits/stdc++.h>
using namespace std;
#define int long long
#define pll pair<int, int>
#define mp make_pair
#define pb push_back
#define f first
#define s second
const int maxc=34;
signed main(){
int s;cin>>s;
vector<tuple<int,int,int,int>> v;
// clock,num,price,type;
for(int i=0;i<s;i++){
int clock,num,price,type=0;
cin>>num>>clock>>price;
v.pb({clock,num,price,type});
}
int q;cin>>q;
for(int i=0;i<q;i++){
int clock,num,price,type=1;
cin>>num>>clock>>price;
v.pb({clock,num,price,type});
}
sort(v.begin(),v.end(),greater<tuple<int,int,int,int>>());
int n=v.size(), ans=0;
vector<int> prof(100005, -1e15);
prof[0]=0;
for(int i=0;i<n;i++){
auto [clock,num,price,type]=v[i];
//~ printf("%lld %lld %lld %lld considering\n", clock,num,price,type);
if(type==0){
for(int j=maxc-1;j>=0;j--){
int from=j-num;
if(from >= 0){
prof[j]=max(prof[from]-price, prof[j]);
}
}
}
else {
for(int j=0;j<maxc;j++){
int from=j+num;
if(from < maxc){
prof[j]=max(prof[from]+price, prof[j]);
}
}
}
}
for(int i=0;i<=maxc;i++){
ans=max(ans, prof[i]);
}
cout<<ans;
}
# | 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... |