#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+5;
int n,q,a[maxn];
int ma[maxn][35],mi[maxn][35];
inline int read()
{
int x=0,f=1;char ch=getchar();
while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
while (ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
return x*f;
}
int main(){
memset(mi,0x3f,sizeof mi);
n=read();
for(register int i=1;i<=n;i++){
a[i]=read();
ma[i][0]=a[i];
mi[i][0]=a[i];
}
for(register int j=1;(1<<j)<=n;j++){
for(int i=1;i+(1<<j)-1<=n;i++){
ma[i][j]=max(ma[i][j-1],ma[i+(1<<(j-1))][j-1]);
mi[i][j]=min(mi[i][j-1],mi[i+(1<<(j-1))][j-1]);
}
}
q=read();
for(register int i=1;i<=q;i++){
int l,r;
l=read();r=read();
int lgr=log2(r-l+1);
int Ma=max(ma[l][lgr],ma[r-(1<<lgr)+1][lgr]);
int Mi=min(mi[l][lgr],mi[r-(1<<lgr)+1][lgr]);
printf("%d\n",Ma-Mi);
}
return 0;
}

在本地编译就是正常的,但为什么洛谷过不了,有哪位大佬指点一下吗