#include <iostream>
#include <vector>
#include <random>
#include <algorithm>
#include <chrono>
#include <cstring>
#define all(x) x.begin(), x.end()
using namespace std;
typedef long long ll;
#define int long long
const int nd = 2e3 + 1;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
uniform_int_distribution<int> dist(1 , (int)2e9);
struct node{
bool type;
int c , f , v;
node(){}
node(bool type , int c , int f , int v) : type(type) , c(c) , f(f) , v(v){}
bool operator<(const node& o) const{
if(o.f == f) return (type && !o.type);
return f > o.f;
}
};
vector <node> a;
int dp[2][50 * nd];
bool build[2][50 * nd];
void solve(){
int n; cin >> n;
//memset(dp[0] , -0x3f , sizeof(dp[0])); memset(dp[1] , -0x3f , sizeof(dp[1]));
for(int i = 1;i <= n; ++ i){
int c , f , v; cin >> c >> f >> v;
a.push_back(node(true , c , f , - v));
}
int m; cin >> m;
for(int i = 1;i <= m; ++ i){
int c , f , v; cin >> c >> f >> v;
a.push_back(node(false , -c , f , v));
}
sort(all(a));
int res = 0;
build[0][0] = true;
build[1][0] = true;
for(auto [type , c , f , v] : a){
//cout << type << " " << c << " " << f << " " << v << '\n';
for(int i = 0; i < 50 * nd; ++ i) if(i + c >= 0 && i + c < 50 * nd){
//if(build[0][i]) build[0][]
if((dp[1][i + c] < dp[0][i] + v || !build[1][i + c]) && build[0][i]){
build[1][i + c] = true;
dp[1][i + c] = dp[0][i] + v;
}
//cout << i << " " << build[1][i] << '\n';
}
for(int i = 0; i < 50 * nd; ++ i){
dp[0][i] = dp[1][i] , res = max(res , dp[1][i]) ,
build[0][i] = build[1][i];
//cout << i << " " << dp[0][i] << " " << build[0][i] << '\n';
}
}
cout << res;
}
signed main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
#define task "task"
if(fopen(task".inp", "r")) {
freopen(task".inp", "r", stdin);
freopen(task".out", "w", stdout);
}
solve();
return 0;
}
Compilation message (stderr)
clo.cpp: In function 'int main()':
clo.cpp:77:24: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
77 | freopen(task".inp", "r", stdin);
| ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
clo.cpp:78:24: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
78 | freopen(task".out", "w", stdout);
| ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
# | 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... |