#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
#define g0(x) get<0>(x)
#define g1(x) get<1>(x)
#define g2(x) get<2>(x)
#define mp make_pair
#define pb push_back
#define int long long 
#define f first
#define s second
#define pll pair<long long, long long>
signed main(){
	ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
	int n,k,q;cin>>n>>k>>q;
	int a[n];
	for(int i=0;i<n;i++){
		cin>>a[i];
		a[i]--;
	}
	int mxr[n];
	for(int i=0;i<n;i++){
		int j=i+1;
		map<int,map<int,int>> rel;
		for(;j<n;j++){
			int sup=((j-i)%2? 1: -1);
			if(a[j-1]==a[j])break;
			int cur=rel[a[j-1]][a[j]];
			//~ if(i==1) cout<<sup<<" "<<cur<<endl;
			if(cur==-sup){
				break;
			}
			rel[a[j-1]][a[j]]=sup;
			rel[a[j]][a[j-1]]=-sup;
		}
		mxr[i]=j-1;
	}
	//~ for(int i=0;i<n;i++)cout<<mxr[i]<<" ";
	//~ cout<<endl;
	for(int i=0;i<q;i++){
		int l, r;
		cin>>l>>r;
		l--, r--;
		if (mxr[l] >= r)cout<<"YES\n";
		else cout<<"NO\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... |