Lang:G++
Edit1234567891011121314151617181920212223242526#include <cstdio>int a[20][1000010];int main(){int n;scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d",&a[0][i]);int x=0,y;for(int i=1;i<=n;i<<=1) x++;for(int i=1,p=1;i<x;i++,p<<=1){for(int j=1;j+p<=n;j++){a[i][j]=a[i-1][j]>a[i-1][j+p]?a[i-1][j+p]:a[i-1][j];}}scanf("%d",&n);for(int i=0;i<n;i++){scanf("%d %d",&x,&y);if(x==y) printf("%d\n",a[0][x]);else{int j,w;for(j=0,w=1;w+x<=y;j++,w<<=1);w>>=1;j--;printf("%d\n",a[j][x]>a[j][y-w+1]?a[j][y-w+1]:a[j][x]);}}}