#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |