Submission #1264734

#TimeUsernameProblemLanguageResultExecution timeMemory
1264734datluong_04Cloud Computing (CEOI18_clo)C++20
100 / 100
260 ms1352 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define FOR(i , a , b) for(int i = a ; i <= b ; i++) #define FAST ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); struct Order{ ll cores , f , cost; }; bool cmp(const Order &a , const Order &b){ if(a.f == b.f) return a.cost < b.cost; return a.f > b.f; } int main(){ FAST; int n; cin >> n; vector<Order> v; FOR(i , 0 , n - 1){ Order a; cin >> a.cores >> a.f >> a.cost; a.cost = -a.cost; v.push_back(a); } int m; cin >> m; FOR(i , 0 , m - 1){ Order a; cin >> a.cores >> a.f >> a.cost; a.cores = -a.cores; v.push_back(a); } sort(v.begin() , v.end() , cmp); vector<ll> dp((int) 1e5 + 55); int k = dp.size(); FOR(i , 0 , k - 1) dp[i] = -1e18; dp[0] = 0; for(auto x : v){ if(x.cores > 0){ for(int i = k - 1 ; i >= 0 ; i--){ if(i - x.cores >= 0) dp[i] = max(dp[i] , dp[i - x.cores] - abs(x.cost)); } } else{ FOR(i , 0 , k - 1){ if(i + abs(x.cores) >= dp.size()) continue; dp[i] = max(dp[i] , dp[i + abs(x.cores)] + abs(x.cost)); } } } ll ans = 0; FOR(i , 0 , k - 1) 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...