Submission #69794

#TimeUsernameProblemLanguageResultExecution timeMemory
69794KubalionzzaleRoller Coaster Railroad (IOI16_railroad)C++14
30 / 100
513 ms14848 KiB
#include "railroad.h" #include <iostream> #include <algorithm> #include <functional> #include <set> #include <map> int n; std::pair<int, int> a[200010]; std::multiset<int> set; //first - output speed, second - index bool compare(const std::pair<int, int> &lhs, const std::pair<int, int> &rhs) { if (lhs.first != rhs.first) return lhs.first < rhs.first; else return lhs.second < rhs.second; } long long plan_roller_coaster(std::vector<int> s, std::vector<int> t) { n = (int) s.size(); for (int i = 0; i < n; ++i) { a[i].first = s[i]; a[i].second = t[i]; set.insert(a[i].second); } long long int ans = 0; set.insert(1); std::sort(a, a + n, compare); for (int i = 0; i < n; ++i) { bool flag = false; if (set.find(a[i].second) != set.end()) flag = true; if (flag) set.erase(set.find(a[i].second)); int val = *set.begin(); ans += std::max(0LL, val - a[i].first * 1LL); set.erase(set.begin()); if (flag) set.insert(a[i].second); } return 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...