제출 #1244340

#제출 시각아이디문제언어결과실행 시간메모리
1244340rhm_ganCircle Passing (EGOI24_circlepassing)C++20
100 / 100
38 ms2400 KiB
#include <bits/stdc++.h> using namespace std; #ifdef LOCAL #include "debug.h" #else #define dbg(...) 42 #endif int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n, m, q; cin >> n >> m >> q; vector<int> k(m); for (int i = 0; i < m; i++) { cin >> k[i]; } auto dist = [&](int x, int y) { if (x > y) swap(x, y); return min(y - x, 2 * n - y + x); }; auto calc = [&](int x, int y, int i) { int d1 = dist(x, k[i]) + dist(y, k[i] + n) + 1; int d2 = dist(x, k[i] + n) + dist(y, k[i]) + 1; return min(d1, d2); }; while (q--) { int x, y; cin >> x >> y; if (x > y) swap(x, y); int res = dist(x, y); int id1 = lower_bound(k.begin(), k.end(), x) - k.begin(); int id2 = lower_bound(k.begin(), k.end(), x) - k.begin() - 1; if (id1 == m) id1 = 0; if (id2 == -1) id2 = m - 1; res = min(res, calc(x, y, id1)); res = min(res, calc(x, y, id2)); cout << res << '\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...