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