Submission #878009

#TimeUsernameProblemLanguageResultExecution timeMemory
878009phongSafety (NOI18_safety)C++17
100 / 100
41 ms6428 KiB
#include <bits/stdc++.h> using ll = long long; const int nmax = 2e5 + 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; } /* 10 4.0530 1.2670 4.3790 2.1420 1.9230 2.1920 3.3740 1.0850 0.9690 3.4510 1.5270 0.5160 4.3860 1.3360 4.5560 1.5050 4.9650 1.8120 0.6250 0.4820 */
#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...