题面太过毒瘤,所以请戳→【模板】ST表
【AC代码】:
#include<bits/stdc++.h>
#define M(a,b) memset(a,b,sizeof(a))
#define INF 0x3f3f3f3f
#define Mod 100003
using namespace std;
inline void read(int &x){
char ch=getchar(),c=ch;
x=0;
while(ch<'0' || ch>'9'){
c=ch;
ch=getchar();
}
while(ch>='0' && ch<='9'){
x=(x<<1)+(x<<3)+ch-'0';
ch=getchar();
}
if(c=='-')x=-x;
}
int f[1000005][21];
int i,j,l,r;
int N,M;
int Query(int l,int r){
int k=log2(r-l+1);
return max(f[l][k],f[r-(1<<k)+1][k]);
}
int main(){
read(N),read(M);
for(i=1;i<=N;i++)read(f[i][0]);
for(j=1;j<=21;j++)
for(i=1;i+(1<<j)-1<=N;i++)
f[i][j]=max(f[i][j-1],f[i+(1<<(j-1))][j-1]);
for(i=1;i<=M;i++){
read(l),read(r);
printf("%d\n",Query(l,r));
}
return 0;
}