Submission #793167

#TimeUsernameProblemLanguageResultExecution timeMemory
793167PoonYaPatCloud Computing (CEOI18_clo)C++14
100 / 100
334 ms1364 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

struct NN {
    int c,f,cost,mode; //1-buy core, 0-sell core
    bool operator < (const NN &o) const {
        if (f==o.f) return mode>o.mode;
        else return f>o.f;
    }
};

ll n,m,dp[100005];
vector<NN> v;

int main() {
    ios_base::sync_with_stdio(0); cin.tie(0);
    for (int i=1; i<=100000; ++i) dp[i]=-1e16;

    cin>>n;
    for (int i=0; i<n; ++i) {
        int c,f,cost;
        cin>>c>>f>>cost;
        v.push_back({c,f,cost,1});
    }
    cin>>m;
    for (int i=0; i<m; ++i) {
        int c,f,cost;
        cin>>c>>f>>cost;
        v.push_back({c,f,cost,0});
    }
    sort(v.begin(),v.end());

    for (auto s : v) {
        if (s.mode==1) for (int i=100000; i>=s.c; --i) dp[i]=max(dp[i],dp[i-s.c]-s.cost);
        else for (int i=0; i<=100000-s.c; ++i) dp[i]=max(dp[i],dp[i+s.c]+s.cost);
    }

    ll ans=0;
    for (int i=0; i<=100000; ++i) 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...