Submission #575451

#TimeUsernameProblemLanguageResultExecution timeMemory
575451codebuster_10Cloud Computing (CEOI18_clo)C++17
100 / 100
1397 ms5380 KiB
#include <bits/stdc++.h> #define int int64_t //be careful about this using namespace std; struct item{ int type,cores,clock_rate,value; }; signed main(){ int n; cin >> n; vector<item> items; while(n--){ int c,f,v; cin >> c >> f >> v; items.push_back({0,c,f,v}); } int m; cin >> m; while(m--){ int c,f,v; cin >> c >> f >> v; items.push_back({1,c,f,v}); } sort(items.begin(), items.end(),[&](auto l,auto r){ return l.clock_rate == r.clock_rate ? l.type > r.type : l.clock_rate < r.clock_rate; }); auto upd = [&](vector<int>& dp,int i,int profit){ while(int(dp.size()) <= i) dp.push_back(-1e16); if(dp[i] < profit) dp[i] = profit; }; vector<int> dp; upd(dp,0,0); for(auto [type,cores,clock_rate,value] : items){ vector<int> ndp = dp; for(int need = 0; need < int(dp.size()); ++need){ int new_need = max(int(0),need + (type == 0 ? -1 : +1) * cores); int new_profit = dp[need] + (type == 0 ? -1 : +1) * value; upd(ndp,new_need,new_profit); } dp = ndp; } cout << dp[0]; 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...