Submission #1291454

#TimeUsernameProblemLanguageResultExecution timeMemory
1291454nguyenkhangninh99Cloud Computing (CEOI18_clo)C++17
100 / 100
711 ms2120 KiB

#include <bits/stdc++.h>
using namespace std;

#define int long long

struct item{
    int c, f, v;
};

bool cmp(item x, item y){
    return (x.f == y.f ? x.v < y.v : x.f > y.f);
}

vector<item> a;

signed main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);

    int n; cin >> n; 
    int sumc = 0;
    for(int i = 0; i < n; i++){
        int c, f, v; cin >> c >> f >> v;
        a.push_back({c, f, -v}); 
        sumc += c;
    }
    int m; cin >> m;
    for(int i = 0; i < m; i++){
        int c, f, v; cin >> c >> f >> v;
        a.push_back({-c, f, v});
    }

    sort(a.begin(), a.end(), cmp);

    vector<int> dp(sumc + 1, -1e18); 
    dp[0] = 0;
    for(auto [c, f, v]: a){
        vector<int> ndp = dp;
        for(int i = 0; i <= sumc; i++){
            if(0 <= i - c && i - c <= sumc && dp[i - c] != -1e18) ndp[i] = max(ndp[i], dp[i - c] + v);
        }
        dp = ndp;
    }
    cout << *max_element(dp.begin(), dp.end());
}
#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...