Submission #412991

#TimeUsernameProblemLanguageResultExecution timeMemory
412991Bench0310Safety (NOI18_safety)C++17
100 / 100
164 ms16796 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef __int128 i128; int main() { ios::sync_with_stdio(0); cin.tie(0); int n; ll h; cin >> n >> h; i128 m=0,b=0; priority_queue<i128> l; priority_queue<i128,vector<i128>,greater<i128>> r; i128 dl=0,dr=0; //real value is x+dx for(int i=0;i<n;i++) { ll s; cin >> s; //f->g dl-=h; dr+=h; b+=(m*h); //add c if(i==0||s<=l.top()+dl) { l.push(s-dl); l.push(s-dl); i128 t=l.top()+dl; l.pop(); r.push(t-dr); } else { r.push(s-dr); r.push(s-dr); i128 t=r.top()+dr; r.pop(); l.push(t-dl); } m--; b+=s; } vector<i128> v; for(int i=0;i<n;i++) { i128 t=l.top(); l.pop(); v.push_back(t+dl); } reverse(v.begin(),v.end()); for(int i=0;i<n;i++) { i128 t=r.top(); r.pop(); v.push_back(t+dr); } i128 res=(1ll<<60); for(i128 x:v) { i128 y=m*x+b; m++; b=y-m*x; res=min(res,y); } cout << ll(res) << "\n"; return 0; }
#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...