#include <bits/stdc++.h>
#define BG 1e5
#define ll long long
using namespace std;
int main(){
int n; cin >> n;
vector<int> c(n);
vector<int> f(n);
vector<int> v(n);
for(int i = 0; i<n; i++) cin >> c[i] >> f[i] >> v[i];
int m; cin >> m;
vector<int> C(m);
vector<int> F(m);
vector<int> V(m);
for(int i = 0; i<m; i++) cin >> C[i] >>F[i] >> V[i];
vector<ll> knap(BG+1, -(1ll<<60));
vector<ll> last(BG+1, -(1ll<<60));
vector<int> q(n+m);
iota(q.begin(), q.end(), 0);
auto get = [&](int i, int val)-> int{
if(i>=n){
if(val == 0) return -C[i-n];
if(val==1) return F[i-n];
if(val==2) return V[i-n];
}
if(val==0) return c[i];
if(val==1) return f[i];
if(val==2) return -v[i];
};
sort(q.begin(), q.end(), [&](int a, int b)->bool{
if( get(a, 1) == get(b, 1)) return a < b;
return get(a, 1) > get(b, 1);
});
knap[0] = 0;
for(int i: q){
last = knap;
for(int j = 0; j<=BG; j++){
if(j-get(i, 0) >= 0 && j-get(i, 0) <= BG && last[j-get(i, 0)] != -(1ll<<60)){
knap[j] = max(knap[j], last[j-get(i, 0)]+get(i, 2));
}
}
}
ll sol = 0;
for(int i = 0; i<=BG; i++) sol = max(sol, knap[i]);
cout << sol << '\n';
}
Compilation message (stderr)
clo.cpp: In lambda function:
clo.cpp:32:5: warning: control reaches end of non-void function [-Wreturn-type]
32 | };
| ^
# | 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... |