Submission #787427

#TimeUsernameProblemLanguageResultExecution timeMemory
787427Sohsoh84Roller Coaster Railroad (IOI16_railroad)C++17
0 / 100
191 ms19056 KiB
#include "railroad.h" #include <bits/stdc++.h> typedef long long ll; using namespace std; #define all(x) (x).begin(), (x).end() #define debug(x) cerr << #x << ": " << x << endl; #define sep ' ' const ll MAXN = 3e6 + 10; ll f[MAXN], n, m; vector<ll> comp_vec; inline int ind(ll x) { return lower_bound(all(comp_vec), x) - comp_vec.begin() + 1; } ll plan_roller_coaster(vector<int> s, vector<int> t) { n = s.size(); for (int i = 0; i < n; i++) comp_vec.push_back(s[i]), comp_vec.push_back(t[i]); sort(all(comp_vec)); m = comp_vec.size(); multiset<int> st; for (int i = 0; i < n; i++) f[ind(s[i])]++, f[ind(t[i])]--; for (int i = 1; i <= m; i++) { for (int j = 0; j < f[i]; j++) st.insert(i); } ll ans = 0, mx = 0; for (int i = 1; i <= m; i++) { while (f[i] < 0) { auto it = prev(st.end()); if (*it >= i) st.erase(it); else { ll val = comp_vec[i - 1] - comp_vec[*it - 1]; ans += val; mx = max(mx, val); } f[i]++; } } return ans - mx; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...