#include <iostream>
#include <set>
using namespace std;
int n, m, q;
int dist(int x, int y){
return min(abs(x - y), n + n - abs(x - y));
}
int main(){
cin>>n>>m>>q;
set<int> st;
for (int i=1, x;i<=m;i++)
cin>>x, st.insert(x), st.insert(x + n);
for (int i=1, x, y, tn = n + n;i<=q;i++){
cin>>x>>y;
int Mn = dist(x, y);
auto u = st.upper_bound(x);
if (u == st.end())
u = st.begin();
Mn = min(Mn, dist(x, *u) + 1 + dist(y, (*u + n) % (n + n)));
u = st.upper_bound(x);
if (u == st.begin())
u = st.end();
u = prev(u);
Mn = min(Mn, dist(x, *u) + 1 + dist(y, (*u + n) % (n + n)));
cout<<Mn<<'\n';
}
}
# | 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... |