Submission #444706

#TimeUsernameProblemLanguageResultExecution timeMemory
444706definitelynotmeeCloud Computing (CEOI18_clo)C++98
100 / 100
595 ms1100 KiB
#include<bits/stdc++.h>
#define mp make_pair
#define mt make_tuple
#define ff first
#define ss second
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
const ll INFL = (1LL<<62)-1;
const int INF = (1<<30)-1;
const double EPS = 1e-7;
const int MOD = 1e9 + 7;
const int MAXN = 1e6+1;

struct specs{
    ll c, f, v;
};

int main(){

    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    int n;
    cin >> n;

    ll corecount = 0;
    vector<specs> comp(n);
    for(int i = 0; i < n; i++)
        cin >> comp[i].c >> comp[i].f >> comp[i].v;
    for(int i = 0; i < n; i++)
        corecount += comp[i].c;

    int m;
    cin >> m;
    vector<specs> order(m);

    for(int i = 0; i < m; i++)
        cin >> order[i].c >> order[i].f >> order[i].v;
    
    sort(comp.begin(), comp.end(),[&](specs a, specs b){
        return a.f > b.f;
    });
    sort(order.begin(), order.end(),[&](specs a, specs b){
        return a.f > b.f;
    });

    vector<ll> dp(corecount+1,-INFL);
    dp[0] = 0;
    // dp[i] = best value of configurations of orders that have i cores to spare

    
    int ptr = 0;
    ll resp = 0;
    for(int i = 0; i < m; i++){
        while(ptr < n && comp[ptr].f >= order[i].f){
            for(int j = corecount; j >= comp[ptr].c; j--){
                dp[j] = max(dp[j],dp[j-comp[ptr].c] -comp[ptr].v);
            }
            ptr++;
        }
        for(int j = 0; j <= corecount-order[i].c; j++){
            dp[j] = max(dp[j], dp[j+order[i].c] + order[i].v);
        }
    }
    for(int i = 0; i <= corecount; i++)
        resp = max(resp,dp[i]);
    cout << resp << '\n';

    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...