不知道这破代码有多少问题
#include<cstdio>
#include<algorithm>
using namespace std;
int n,a[100001],f[100001][20],log_num[100001]={0,0,1};
void init_st(){
for(int i=1;i<=n;++i) log_num[i]=log_num[i>>1]+1,f[i][0]=a[i];
for(int j=1;j<=20;++j) for(int i=1;i+(1<<j)-1<=n;++i) f[i][j]=max(f[i][j-1],f[i+(1<<(j-1))][j-1]);
}
int get_ans(int x,int y){
return max(f[x][log_num[y-x+1]],f[y-(1<<log_num[y-x+1])+1][log_num[y-x+1]]);
}
int main(){
int m,x,y;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;++i) scanf("%d",a+i);
while(m--) scanf("%d%d",&x,&y),printf("%d\n",get_ans(x,y));
return 0;
}