#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... |