제출 #1205817

#제출 시각아이디문제언어결과실행 시간메모리
1205817MighilonCloud Computing (CEOI18_clo)C++20
100 / 100
244 ms1236 KiB
#include <bits/stdc++.h>
using namespace std;
 
#ifdef DEBUG
#include "../Library/debug.h"
#else
#define dbg(x...)
#endif
 
typedef long long ll;
typedef long double ld;
typedef pair<int, int> pi;
typedef pair<ll, ll> pl;
typedef vector<int> vi;
typedef vector<bool> vb;
typedef vector<ll> vl;
typedef vector<pi> vpi;
typedef vector<pl> vpl; 
 
#define FOR(i, a, b) for (int i = (a); i < (b); ++i)
#define F0R(i, a) for (int i = 0; i < (a); ++i)
#define FORd(i, a, b) for (int i = (b) - 1; i >= (a); --i)
#define F0Rd(i, a) for (int i = (a) - 1; i >= 0; --i)
#define trav(a, x) for (auto& a : x)
#define f first 
#define s second
#define pb push_back
#define sz(x) (int)(x).size()
#define all(x) x.begin(), x.end()
 
const char nl = '\n';
const int INF = 1e9;
const int MOD = 1e9 + 7;
 
void solve(){
    int n;cin>>n;
    vector<array<int,3>> a(n);
    F0R(i,n)cin>>a[i][0]>>a[i][1]>>a[i][2];
    int m;cin>>m;
    vector<array<int,3>> b(m);
    F0R(i,m)cin>>b[i][0]>>b[i][1]>>b[i][2];
    vector<array<int,3>> c(n+m);
    F0R(i,n) c[i]={a[i][0],a[i][1],-a[i][2]};
    F0R(i,m) c[i+n]={-b[i][0],b[i][1],b[i][2]};
    vl dp((int)1e5+100,-1e18);
    sort(all(c),[](auto& i,auto& j){if(i[1]==j[1])return i[2]<j[2];return i[1]>j[1];});
    dp[0]=0;
    F0R(i,n+m){
        if(c[i][0]>0){
            F0Rd(j,1e5+1){
                if(j+c[i][0]>=0){
                    dp[j+c[i][0]]=max(dp[j+c[i][0]],dp[j]+c[i][2]);
                }
            }
        }
        else{
            F0R(j,1e5+1){
                if(j+c[i][0]>=0){
                    dp[j+c[i][0]]=max(dp[j+c[i][0]],dp[j]+c[i][2]);
                }
            }
        }
    }
    ll ans=0;
    F0R(i,1e5+1){
        ans=max(ans,dp[i]);
    }
    cout<<ans<<nl;
}
 
int32_t main(){
    ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
    
    int TC = 1;
    // cin >> TC;
    while(TC--){
        solve();
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...