Submission #499806

#TimeUsernameProblemLanguageResultExecution timeMemory
499806blueSafety (NOI18_safety)C++17
100 / 100
238 ms20952 KiB
#include <iostream> #include <set> #include <vector> using namespace std; using ll = long long; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int N; ll H; cin >> N >> H; ll s0; cin >> s0; multiset<ll> left; ll left_lp = 0; multiset<ll> right; ll right_lp = 0; left.insert(s0); right.insert(s0); ll ans = 0; for(int i = 2; i <= N; i++) { ll S; cin >> S; left_lp -= H; right_lp += H; if(S <= left_lp + *left.rbegin()) { ans += left_lp + *left.rbegin() - S; right.insert(-right_lp + *left.rbegin() + left_lp); left.erase(left.find(*left.rbegin())); left.insert(S - left_lp); left.insert(S - left_lp); } else if(S >= right_lp + *right.begin()) { ans += S - (right_lp + *right.begin()); left.insert(-left_lp + *right.begin() + right_lp); right.erase(right.find(*right.begin())); right.insert(S - right_lp); right.insert(S - right_lp); } else { left.insert(-left_lp + S); right.insert(-right_lp + S); } } cout << ans << '\n'; }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...