![](http://qdoj.club/upload/pimg1123_1.png)
![](http://qdoj.club/upload/pimg1123_2.png)
提示
![](http://qdoj.club/upload/pimg1123_3.png)
code:
#include<bits/stdc++.h> #define ll long long #define inf 0x7fffffff using namespace std; int n,m; #define maxn 100008 int d[maxn][99]; int a[maxn]; int main() { scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) { scanf("%d",&a[i]); } for(int i=1;i<=n;i++)d[i][0]=a[i]; for(int j=1;(1<<j)<=n;j++) { for(int i=1;i+(1<<j)-1<=n;i++) { d[i][j]=max(d[i][j-1],d[i+(1<<(j-1))][j-1]); } } for(int i=1;i<=m;i++) { int k=0; int l,r; scanf("%d%d",&l,&r); while(1<<(k+1)<=(r-l+1))k++; printf("%d\n",max(d[l][k],d[r-(1<<k)+1][k])); } return 0; }