思路
經典RMQ,ST表不會請參見OIwiki
我用的ST表不需要任何其他標頭檔案
程式碼
直接上程式碼
#include<cstdio>
#include<iostream>
using namespace std;
const int N=100001;
int i,j,m,n,l,r,lg[N],st[N][22];
int que(int x,int y){
int z=lg[y-x+1];
return max(st[x][z],st[y-(1<<z)+1][z]);
}
int main(){
cin>>n>>m;
lg[0]=-1;
for(i=1;i<=n;++i){
scanf("%d",&st[i][0]);
lg[i]=lg[i>>1]+1;
}
for(j=1;j<22;++j)
for(i=1;i+(1<<j)-1<=n;++i)
st[i][j]=max(st[i][j-1],st[i+(1<<(j-1))][j-1]);
for(i=1;i<=m;++i){
scanf("%d%d",&l,&r);
printf("%d\n",que(l,r));
}
return 0;
}