Submission #878008

#TimeUsernameProblemLanguageResultExecution timeMemory
878008phongSafety (NOI18_safety)C++17
66 / 100
8 ms1368 KiB
#include <bits/stdc++.h> using ll = long long; const int nmax = 1e5 + 5; const int lg = 20; const int mod = 1e9 + 7; const ll oo = 1e18; #define fi first #define se second #define pii pair<int, int> using namespace std; int n, H; int a[nmax]; int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL), cout.tie(NULL); // freopen("code.inp", "r", stdin); // freopen("code.out", "w", stdout); cin >> n >> H; for(int i = 1; i <= n; ++i) cin >> a[i]; priority_queue<ll> le; priority_queue<ll, vector<ll>, greater<ll>> ri; ll cur = 0, ans = 0; for(int i = 1; i <= n; ++i){ if(i == 1){ le.push(a[1]); ri.push(a[1]); } else{ ll x = le.top(), y = ri.top(); if(x - cur <= a[i] && a[i] <= y + cur){ le.push(a[i] + cur); ri.push(a[i] - cur); } else{ if(a[i] < x - cur){ le.push(a[i] + cur); le.push(a[i] + cur); x -= cur; ans += abs(x - a[i]); le.pop(); ri.push(x - cur); } else{ ri.push(a[i] - cur); ri.push(a[i] - cur); y += cur; ans += abs(y - a[i]); ri.pop(); le.push(y + cur); } } } cur += H; } 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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...