只过了1个,其他全WA
#include<bits/stdc++.h>
using namespace std;
long long a[500010],cnt[100010];
long long ans[200010];
long long n,m,len,res;
long long curL,curR;
struct wbx{
long long p,l,r;
}q[1000005];
bool cmp(const wbx &a, const wbx &b)
{
return (a.l/len) == (b.l/len) ? a.r < b.r : a.l < b.l;
}
void add(long long x)
{
cnt[a[x]]++;
if(cnt[a[x]]>cnt[res]) res=a[x];
}
void del(long long x)
{
cnt[a[x]]--;
}
int main(){
scanf("%lld%lld",&n,&m);
len=sqrt(n);
for(int i=1;i<=n;i++)
scanf("%lld",&a[i]);
scanf("%lld",&m);
for(int i=1;i<=m;i++)
{
scanf("%lld%lld",&q[i].l,&q[i].r);
q[i].p=i;
}
sort(q+1,q+1+m,cmp);
for(int i=1;i<=m;i++)
{
int L=q[i].l,R=q[i].r;
while(curL<L) del(curL++);
while(curL>L) add(--curL);
while(curR<R) add(++curR);
while(curR>R) del(curR--);
if(cnt[res]>(R-L+1)/2)
ans[q[i].p]=res;
else ans[q[i].p]=0;
}
for(int i=1;i<=m;i++)
{
if(ans[i]==0) cout<<"no"<<endl;
else cout<<"yes "<<ans[i]<<endl;
}
return 0;
}