Submission #836392

#TimeUsernameProblemLanguageResultExecution timeMemory
836392alvingogoBitaro's travel (JOI23_travel)C++14
100 / 100
729 ms7960 KiB
#include <bits/stdc++.h> #pragma GCC optimize("Ofast") #define AquA cin.tie(0);ios_base::sync_with_stdio(0); #define fs first #define sc second #define p_q priority_queue #define int long long using namespace std; vector<int> e,f; signed main(){ AquA; int n; cin >> n; vector<int> v(n+2); for(int i=1;i<=n;i++){ cin >> v[i]; } const int inf=1e18; v[0]=-inf; v[n+1]=inf; int q; cin >> q; while(q--){ int c; cin >> c; int p=lower_bound(v.begin(),v.end(),c)-v.begin(); int l,r; int ans=0; if(c-v[p-1]<=v[p]-c){ p--; } l=r=p; ans+=abs(c-v[p]); while(l!=1 || r!=n){ if(abs(v[p]-v[l-1])<=abs(v[r+1]-v[p])){ int a=1,b=l-1; while(b>a){ int m=(a+b+1)/2; if(abs(v[p]-v[r+1])>=abs(v[p]-v[m-1])){ b=m-1; } else{ a=m; } } ans+=abs(v[p]-v[a]); l=p=a; } else{ int a=r+1,b=n; while(b>a){ int m=(a+b)/2; if(abs(v[p]-v[l-1])>abs(v[p]-v[m+1])){ a=m+1; } else{ b=m; } } ans+=abs(v[p]-v[a]); r=p=a; } } cout << ans << "\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...