#include <bits/stdc++.h>
#define int long long
using namespace std;
int n, m, q;
int dis(int x, int y) { return min(abs(x-y), 2*n - abs(x-y)); }
signed main() {
cin >> n >> m >> q;
vector<int> k(m);
for(int i = 0 ; i < m ; i++) {
cin >> k[i];
k.push_back(k[i] + n);
}
sort(k.begin(), k.end());
for(int i = 0 ; i < q ; i++) {
int x, y; cin >> x >> y;
// int a = min(abs(x-y), abs(min(x, y)) + abs(y-2*n));
int a = dis(x, y);
int l = 0, r = k.size();
while(r - l > 1) {
int md = (l+r)/2;
if(k[md] >= x) r = md;
else l = md;
}
// else {
// l =
// }
int w = k[l];
int b = dis(x, w);
w += n;
w %= 2*n;
b += dis(w, y);
int e = k[r];
int c = dis(x, e);
e += n;
e %= 2*n;
c += dis(e, y);
b++; c++;
// cout << endl;
// cout << a << " " << b << " " << c << endl;
cout << min({a, b, c}) << endl;
}
}
# | 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... |