Submission #349019

#TimeUsernameProblemLanguageResultExecution timeMemory
349019dooweyCloud Computing (CEOI18_clo)C++14
100 / 100
375 ms2180 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int, int> pii; #define fi first #define se second #define mp make_pair #define fastIO ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); struct order{ int cores; int fr; int val; int type; // type == 1 => computer, type == 2>= order bool operator< (const order &q) const { if(fr == q.fr){ return type > q.type; } return fr < q.fr; } }; const int M = (int)2e5+10; const ll inf = (ll)1e18; ll dp[M]; int main(){ fastIO; int n; cin >> n; int c, f, v; vector<order> ff; for(int i = 0 ; i < n; i ++ ){ cin >> c >> f >> v; ff.push_back({c,f,v,1}); } int m; cin >> m; for(int i = 0; i < m ; i ++ ){ cin >> c >> f >> v; ff.push_back({c,f,v,2}); } sort(ff.begin(),ff.end()); for(int i = 0 ; i < M; i ++ ){ dp[i]=-inf; } dp[0]=0; int mx = 0; ll ans = 0; for(int i = ff.size() - 1; i >= 0 ; i -- ){ if(ff[i].type == 1){ for(int j = mx; j >= 0; j -- ){ dp[j+ff[i].cores]=max(dp[j+ff[i].cores],dp[j]-ff[i].val); } mx += ff[i].cores; } else{ for(int j = ff[i].cores; j <= mx ; j ++ ){ dp[j-ff[i].cores]=max(dp[j-ff[i].cores],dp[j]+ff[i].val); ans = max(ans,dp[j-ff[i].cores]); } } } cout << ans << "\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...