Submission #1167131

#TimeUsernameProblemLanguageResultExecution timeMemory
1167131shraefktCircle Passing (EGOI24_circlepassing)C++20
56 / 100
2094 ms3280 KiB
#include <bits/stdc++.h> using namespace std; #define int long long const int MAX = 500007; const int INF = LLONG_MAX; int N; int distance(int x, int y) { int dist = abs(x-y); dist = min(dist, 2*N-dist); return dist; } int32_t main() { ios::sync_with_stdio(0); cin.tie(0); int M,Q; cin >> N >> M >> Q; int best_friend[M]; //other best_friend is +N for (int i=0;i<M;i++) { cin >> best_friend[i]; } int bridge_is_totally_useless_radius = (N+1)/2; int bridge_is_useless_radius = N/2-1; int x, y; for (int i=0;i<Q;i++) { cin >> x >> y; if (distance(x,y)<=bridge_is_totally_useless_radius) { cout << distance(x,y) << endl; } else { int shortest_path = distance(x,y); for (int i=0;i<M;i++) { if (distance(best_friend[i],x)>distance(best_friend[i]+N,x)) { shortest_path = min(distance(y,best_friend[i]) + 1 + distance(x,best_friend[i] + N), shortest_path); } else { shortest_path = min(distance(x,best_friend[i]) + 1 + distance(y,best_friend[i] + N),shortest_path); } } cout << shortest_path << endl; } } }
#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...