제출 #1232715

#제출 시각아이디문제언어결과실행 시간메모리
1232715coco2311Circle Passing (EGOI24_circlepassing)C++17
100 / 100
569 ms94524 KiB
#include <iostream> #include <set> #include <cmath> using namespace std; int N; int dist(int a,int b){ int d=abs(a-b); d=min(d,(2*N)-d); return d; } int main(){ ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); // freopen("input.in","r",stdin); int M,Q; cin>>N>>M>>Q; set<int> l; int a; for(int i=0;i<M;i++){ cin>>a; l.insert(a); l.insert(a+N); l.insert(a+2*N); l.insert(a-N); } int x,y; int minPassesXY,w,minPassesXami1,minPassesYami1,minPassesXami2,minPassesYami2; int ami[2]; // amitie for(int i=0;i<Q;i++){ cin>>x>>y; minPassesXY=dist(x,y); ami[0]=(*l.lower_bound(x)+2*N)%(2*N); auto it=l.upper_bound(x); it--; ami[1]=((*it)+2*N)%(2*N); for(int j=0;j<2;j++){ minPassesXami1=dist(x,ami[j]); minPassesYami2=dist(y,(ami[j]+N)%(2*N)); minPassesXY=min(minPassesXY,minPassesYami2+minPassesXami1+1); minPassesYami1=dist(y,ami[j]); minPassesXami2=dist(x,(ami[j]+N)%(2*N)); minPassesXY=min(minPassesXY,minPassesXami2+minPassesYami1+1); } cout<<minPassesXY<<'\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...