Submission #580358

#TimeUsernameProblemLanguageResultExecution timeMemory
580358islingrSafety (NOI18_safety)C++17
100 / 100
53 ms6220 KiB
#pragma GCC optimize("O3,unroll-loops") #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt") #include "bits/stdc++.h" using namespace std; using ll = long long; using ld = long double; #define rep(i, a, b) for (auto i = (a); i < (b); ++i) #define per(i, a, b) for (auto i = (b); i-- > (a);) #define all(x) begin(x), end(x) #define rall(x) (x).rbegin(), (x).rend() #define sz(x) static_cast<int>((x).size()) template <class T> bool uin(T& a, const T& b) { return a > b ? a = b, true : false; } template <class T> bool uax(T& a, const T& b) { return a < b ? a = b, true : false; } mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); signed main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n; ll h; cin >> n >> h; vector<int> a(n); for (auto& x : a) cin >> x; priority_queue<ll> L, R; ll shift = 0; auto push_L = [&](auto y) { L.push(y + shift); }; auto push_R = [&](auto y) { R.push(-(y - shift)); }; auto get_L = [&]() { return L.top() - shift; }; auto get_R = [&]() { return -R.top() + shift; }; ll val = 0; push_L(a[0]); push_R(a[0]); rep(i, 1, n) { const auto x = a[i]; shift += h; const auto tl = get_L(); const auto tr = get_R(); if (x < tl) { L.pop(); push_L(x); push_L(x); push_R(tl); val += tl - x; } else if (x > tr) { R.pop(); push_R(x); push_R(x); push_L(tr); val += x - tr; } else { push_L(x); push_R(x); } } cout << val << '\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...