제출 #1100870

#제출 시각아이디문제언어결과실행 시간메모리
1100870RajCircle Passing (EGOI24_circlepassing)C++11
0 / 100
2059 ms568 KiB
#include <bits/stdc++.h> using namespace std; int n,M,Q; unordered_map <int,int> v; int stanga(int x,int y) { int cnt=0; while(x!=y) { cnt++; x--; if(x<0) x=2*n-1; } return cnt; } int dreapta(int x,int y) { int cnt=0; while(x!=y) { cnt++; x++; if(x>=2*n) x=0; } return cnt; } int shc(int x, int y) { int cp=x; int pas1=0; int pas4=0; int pas3=0; int pas2=0; while(x!=y) { if(v[x]!=0) { pas1+=stanga(v[x],y)+1; pas2+=dreapta(v[x],y)+1; break; } ++pas1; ++pas2; x--; if(x<0) x=2*n-1; } pas1=min(pas1,pas2); x=cp; while(x!=y) { if(v[x]!=0) { pas3+=stanga(v[x],y)+1; pas4+=dreapta(v[x],y)+1; break; } pas3++; ++pas4; x++; if(x>=2*n) x=0; } pas2=min(pas3,pas4); return min(pas1,pas2); } int main() { cin>>n>>M>>Q; for(int i=1;i<=M;++i) { int x; cin>>x; if(x>=n) { v[x-n]=x; v[x]=x-n; } if(x<n) { v[x+n]=x; v[x]=x+n; } } for(int i=1;i<=Q;++i) { int a,b; cin>>a>>b; cout<<min(shc(a,b),min(stanga(a,b),dreapta(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...