#include <bits/stdc++.h>
#include <functional>
#define int long long
using namespace std;
int n, m, q;
const int INF = 1e9+7;
// vector<vector<int>> adjList;
// vector<int> dist;
// bitset<500000000> bf;
// void bfs(int node){
// dist.at(node) = 0;
// queue<int> que;
// que.push(node);
// while(!que.empty()){
// int cur = que.front();
// que.pop();
// for(auto itr : adjList.at(cur)){
// if(dist.at(itr) == INF){
// dist.at(itr) = dist.at(cur)+1;
// que.push(itr);
// }
// }
// }
// }
signed main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>n>>m>>q;
// adjList = vector<vector<int>>(2*n);
// dist = vector<int>(2*n, INF);
int bf;
for(int i = 0; i<m; i++){
cin>>bf;
// adjList.at(x).push_back(x+n);
// adjList.at(x+n).push_back(x);
// bf[x] = 1;
}
// adjList.at(0).push_back(2*n-1);
// adjList.at(0).push_back(1);
// adjList.at(2*n-1).push_back(0);
// adjList.at(2*n-1).push_back(2*n-2);
// for(int i = 1; i<2*n-1; i++){
// adjList.at(i).push_back(i+1);
// adjList.at(i).push_back(i-1);
// }
// bfs(0);
while(q--){
int x, y;
cin>>x>>y;
int dist1 = min(abs(y-bf), bf+2*n-y);
int dist2 = min(abs(y-(bf+n)), 2*n-(bf+n)+y);
if(x < n){
cout << min(dist1, dist2+1) << "\n";
}else{
cout << min(dist1+1, dist2) << "\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... |