Submission #1109848

#TimeUsernameProblemLanguageResultExecution timeMemory
1109848RajCircle Passing (EGOI24_circlepassing)C++11
100 / 100
433 ms52560 KiB
#include <bits/stdc++.h> using namespace std; int n,M,Q; set <int> s; int dist(int x,int y) { return min(abs(x-y),n*2-abs(x-y)); } int shc(int x, int y) { auto it=s.lower_bound(x); if(it==s.end()) it=s.begin(); int val=*it; if(val>n) val-=n; else val+=n; int ans=min(dist(x,y),dist(x,*it)+1+dist(val,y)); if(it==s.begin()) it=prev(s.end()); else it=prev(it); val=*it; if(val>n) val-=n; else val+=n; ans=min(ans,dist(x,*it)+1+dist(val,y)); return ans; } int main() { cin>>n>>M>>Q; for(int i=1;i<=M;++i) { int x; cin>>x; if(x>n) s.insert(2*n-x); else s.insert(x+n); s.insert(abs(x)); } for(int i=1;i<=Q;++i) { int a,b; cin>>a>>b; cout<<shc(a,b)<<'\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...