Submission #1171217

#TimeUsernameProblemLanguageResultExecution timeMemory
1171217cokeaholicCircle Passing (EGOI24_circlepassing)C++20
0 / 100
185 ms33332 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long

int32_t main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n, m, q;
    cin >> n >> m >> q;
    set<int> bt;
    for (int i = 0; i < m; i++) {
        int b;
        cin >> b;
        bt.insert(b);
        bt.insert(b + n);
    }

    while (q--) {
        int x, y;
        cin >> x >> y;
        if (x > y) swap(x, y);

        int ans = min(y - x, 2 * n - (y - x));

        auto it = bt.lower_bound(x);
        auto prev_it = it;
        if (it == bt.begin()) {
            prev_it = bt.end();
            prev_it--;
        } else {
            prev_it--;
        }

        vector<int> candidates = {*it, *prev_it};

        for (int cand : candidates) {
            int b = cand;
            if (b >= n)
                b -= n;
            int cost = abs(x - b) + 1 + abs(y - (b + n));
            ans = min(ans, cost);
        }

        cout << ans << "\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...