Submission #1134295

#TimeUsernameProblemLanguageResultExecution timeMemory
1134295LuvidiSafety (NOI18_safety)C++20
100 / 100
225 ms20752 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long int main(){ ll n,h; cin>>n>>h; ll a[n+1]; for(int i=1;i<=n;i++){ cin>>a[i]; } multiset<ll> s1,s2; s1.insert(-1e9); s2.insert(1e9); ll m=0,x1=0,x2=0; for(int i=1;i<=n;i++){ x1-=h; x2+=h; ll c=*s1.rbegin()+x1; if(a[i]>=c){ s2.insert(a[i]-x2); }else{ m+=c-a[i]; s1.insert(a[i]-x1); s1.erase(s1.find(c-x1)); s2.insert(c-x2); } c=*s2.begin()+x2; if(a[i]<=c){ s1.insert(a[i]-x1); }else{ m+=a[i]-c; s2.insert(a[i]-x2); s2.erase(s2.find(c-x2)); s1.insert(c-x1); } } cout<<m<<'\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...