#include <bits/stdc++.h>
using namespace std;
int main() {
int n, k, q;
cin >> n >> k >> q;
int l[n];
vector<int> adj[n];
stack<int> s;
for(int i=0;i<n;i++) {
cin >> l[i];
while(s.size() && l[s.top()] < l[i]) {
adj[s.top()].push_back(i);
adj[i].push_back(s.top());
s.pop();
}
if(s.size()) {
adj[s.top()].push_back(i);
adj[i].push_back(s.top());
}
if(s.size() && l[s.top()] == l[i])
s.pop();
s.push(i);
}
while(q--) {
int a, b;
cin >> a >> b;
a--; b--;
queue<int> q;
q.push(a);
int dist[n];
memset(dist,-1,sizeof(dist));
dist[a] = 0;
while(q.size()) {
int x = q.front();
q.pop();
for(auto y: adj[x])
if(dist[y] == -1) {
dist[y] = dist[x] + 1;
q.push(y);
}
}
cout << dist[b] - 1 << "\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... |