제출 #1166162

#제출 시각아이디문제언어결과실행 시간메모리
116616212345678Circle Passing (EGOI24_circlepassing)C++20
14 / 100
176 ms33332 KiB
#include <bits/stdc++.h> using namespace std; int n, m, q, x, y; set<int> s; int dist(int x, int y) { if (x>y) swap(x, y); return min(y-x, 2*n-y+x); } int move(int x) { return (x+n)%(2*n); } int main() { cin.tie(NULL)->sync_with_stdio(false); cin>>n>>m>>q; for (int i=1; i<=m; i++) cin>>x, s.insert(x), s.insert(x+n); while (q--) { cin>>x>>y; int res=dist(x, y); auto itr=s.lower_bound(x); if (itr!=s.end()) res=min(res, dist(x, *itr)+1+dist(move(*itr), y)); if (itr!=s.begin()) res=min(res, dist(x, *prev(itr))+1+dist(move(*prev(itr)), y)); cout<<res<<'\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...