Submission #1264732

#TimeUsernameProblemLanguageResultExecution timeMemory
1264732datluong_04Cloud Computing (CEOI18_clo)C++20
0 / 100
22 ms1096 KiB
#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 + 55);
    int k = dp.size();

    FOR(i , 0 , k - 1) dp[i] = -1e18;
    dp[0] = 0;
    for(auto x : v){
       // if(x.cores > 0){
            for(int i = k - 1 ; i >= 0 ; i--){
                if(i - x.cores >= 0) dp[i] = max(dp[i] , dp[i - x.cores] - x.cost);
            }
        //}
        //else{
            FOR(i , 0 , k - 1){
                if(i + x.cores >= dp.size()) continue;
                dp[i] = max(dp[i] , dp[i + x.cores] + x.cost);
            }
        //}
    }
    ll ans = 0;
    FOR(i , 0 , k - 1) ans = max(ans , dp[i]);
    cout << ans;
}
#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...