Submission #1264499

#TimeUsernameProblemLanguageResultExecution timeMemory
1264499datluong_04Cloud Computing (CEOI18_clo)C++20
100 / 100
268 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 + 10); int k = dp.size(); FOR(i , 0 , k - 1) dp[i] = -LLONG_MAX / 3; dp[0] = 0; ll ans = 0; for(auto x : v){ if(x.cores > 0){ // mua may tinh for(int i = k - 1 ; i >= 0 ; i--){ if(i - abs(x.cores) < 0) continue; dp[i] = max(dp[i] , dp[i - abs(x.cores)] - abs(x.cost)); } } else{ // khach mua 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)); } } } 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...