제출 #1007149

#제출 시각아이디문제언어결과실행 시간메모리
1007149makanhuliaCloud Computing (CEOI18_clo)C++17
0 / 100
4 ms1116 KiB
#include <bits/stdc++.h>
using namespace std;
#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
typedef long long ll;
const ll INF = 1e15;
const ll MOD = 1e9 + 7;
const ll MAXN = 2e3 + 5;
const ll LOG = 31;
#define vll vector <ll>
#define pll pair <ll, ll>
#define fi first
#define se second
#define endl '\n'

ll n, m, d;
pll a [MAXN], b [MAXN];
ll dp [50*MAXN];
vector <array <ll, 3>> ab;

void solve(){
    cin >> n;
    ab.push_back({-INF, 0, 0});
    for(ll i = 1; i <= n; i++){
        ll c, f, v; cin >> c >> f >> v;
        a[i] = {c, v};
        ab.push_back({-f, 0, i});
    }
    cin >> m;
    for(ll i = 1; i <= m; i++){
        ll c, f, v; cin >> c >> f >> v;
        b[i] = {c, v};
        ab.push_back({-f, 1, i});
    }
    sort(ab.begin(), ab.end());
    for(ll j = 0; j < 50*MAXN; j++) dp[j] = -INF;
    dp[0] = 0;
    ll ans = -INF;
    // for(ll i = 1; i <= n+m; i++){
    //     cout << ab[i][0] << " " << ab[i][1] << " " << ab[i][2] << endl;
    // }
    for(ll i = 1; i <= n+m; i++){
        if(ab[i][1]){
            ll c = b[ab[i][2]].fi, v = b[ab[i][2]].se;
            for(ll j = 50*MAXN-1; j >= 0; j--){
                if(j+c < 50*MAXN) dp[j] = max(dp[j], dp[j+c] + v);
                ans = max(ans, dp[j]);
            }
        }
        else{
            ll c = a[ab[i][2]].fi, v = a[ab[i][2]].se;
            for(ll j = 0; j < 50*MAXN; j++){
                if(j-c >= 0) dp[j] = max(dp[j], dp[j-c] - v);
                ans = max(ans, dp[j]);
            }
        }
        // for(ll j = 0; j <= 40; j++){
        //     cout << dp[j] << " ";
        // }
        // cout << endl;
    }
    cout << ans << endl;
}

int main(){
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    // ll t; cin >> t;
    // while(t--){
        solve();
    // }
}
#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...