#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define FOR(i , a , b) for(int i = a ; i <= b; i++)
#define FAST ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
struct Order{
ll cores , f , cost;
};
bool cmp(const Order &a , const Order &b){
if(a.f == b.f) return a.cost < b.cost;
return a.f > b.f;
}
int main(){
FAST;
int n;
cin >> n;
vector<Order> v;
FOR(i , 0 , n - 1){
Order a;
cin >> a.cores >> a.f >> a.cost;
a.cost = -a.cost;
v.push_back(a);
}
int m;
cin >> m;
FOR(i , 0 , m - 1){
Order a;
cin >> a.cores >> a.f >> a.cost;
a.cores = -a.cores;
v.push_back(a);
}
sort(v.begin() , v.end() , cmp);
vector<ll> dp((int) 1e5 + 10);
int k = dp.size();
FOR(i , 0 , k - 1) dp[i] = -LLONG_MAX / 3;
dp[0] = 0;
ll ans = 0;
for(auto x : v){
if(x.cores > 0){
// mua may tinh
for(int i = k - 1 ; i >= 0 ; i--){
if(i - abs(x.cores) < 0) continue;
dp[i] = max(dp[i] , dp[i - abs(x.cores)] - abs(x.cost));
}
}
else{
// khach mua
FOR(i , 0 , k - 1){
if(i + abs(x.cores) >= dp.size()) continue;
dp[i] = max(dp[i] , dp[i + abs(x.cores)] + abs(x.cost));
}
}
}
FOR(i , 0 , k - 1) ans = max(ans , dp[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... |