#include <bits/stdc++.h>
#include <iostream>
using namespace std;
using ll = int;
int main() {
ll n,m,q;
cin>>n>>m>>q;
ll bestie=0;
ll b;
map<ll,ll>p;
map<ll,ll>s;
for(ll so=0;so<=2*n;so++){p[so]=-1;}
for(ll so=0;so<m;so++){
cin>>bestie;
b=(bestie+n)%(2*n);
p[bestie]=b;
p[b]=bestie;
s[bestie]=1;
s[b]=1;
}
ll r=0;
//13
for(ll so=bestie;so<bestie+(2*n);so++){
r=so%(2*n);
if(p[r]==-1){
if(r==0){ s[r]=s[2*n-1]+1; p[r]=p[2*n-1];}
else { s[r]=s[r-1]+1; p[r]=p[r-1];}
}
}
r=0;
for(ll so=bestie;so>=bestie-(2*n);so--){
r=so;
if(so<0){r=2*n+r;}
if(s[r]!=1){
if(r==(2*n)-1){
if(s[r]>s[0]+1){s[r]=s[0]+1; p[r]=p[0];}
}
else {
if(s[r]>s[r+1]+1){ s[r]=s[r+1]+1; p[r]=p[r+1];}
//if(r==3){cout<<s[4]<<"guyiuhoj"<<endl;}
}
}
}
ll x,y;
ll ans=0;
while(q--){
cin>>x>>y;
ans=min((2*n)-abs(y-x),abs(y-x));
ans=min(ans, min((2*n)-abs(y-p[x]),abs(y-p[x]))+s[x]);
cout<<ans<<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... |