#include <bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
int n, m, q;
int dist(int i, int j) {
return min(abs(i-j), 2*n-abs(i-j));
}
signed main() {
cin.tie(nullptr); cout.tie(nullptr);
ios_base::sync_with_stdio(false);
cin >> n >> m >> q;
vector<int> pairs(2*m);
for (int i = 0; i < m; i++) {
cin >> pairs[i];
pairs[i+m] = (pairs[i]+n)%(2*n);
}
sort(pairs.begin(), pairs.end());
for (int i = 0; i < q; i++) {
int a, b;
cin >> a >> b;
int ans = dist(a, b);
auto pair1 = lower_bound(pairs.begin(), pairs.end(), a);
if (pair1 == pairs.end()) {
pair1 = pairs.begin();
}
auto pair2 = lower_bound(pairs.begin(), pairs.end(), a);
if (pair2 == pairs.begin()) {
pair2 = pairs.end() - 1;
} else {
pair2--;
}
ans = min(ans, dist(a, *pair1) + dist(b, (*pair1+n)%(2*n)) + 1);
ans = min(ans, dist(a, *pair2) + dist(b, (*pair2+n)%(2*n)) + 1);
cout << ans << endl;
}
cout.flush();
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... |