不懂什么是ST表的ST表与二叉堆_@Aurora,的博客-CSDN博客
import math
n,m = map(int,input().split())
lst1 = list(map(int,input().split()))
f = [[0]*18 for i in range(1+n)]
for i in range(1,n+1):
f[i][0] = lst1[i-1]
for j in range(1,int(math.log2(n))+1): # 一定不能用ceil,必须用floor 或者int +1
for i in range(1,n-2**j+2):
f[i][j] = max(f[i][j-1],f[i+2**(j-1)][j-1])
for i in range(m):
l,r = map(int,input().split())
k = int(math.log2(r-l+1))
print(max(f[l][k],f[r-2**k+1][k]))