| 记录编号 | 
        205569 | 
        评测结果 | 
        AAAAAAAAAA | 
    
    
        | 题目名称 | 
        58.延绵的山峰 | 
        最终得分 | 
        100 | 
            
    
    
        | 用户昵称 | 
         0 | 
        是否通过 | 
        通过 | 
    
    
        | 代码语言 | 
        C++ | 
        运行时间 | 
        0.635 s  | 
    
    
        | 提交时间 | 
        2015-11-05 16:09:40 | 
        内存使用 | 
        17.43 MiB  | 
        
    
    
    
    		显示代码纯文本
		
		#include<cstdio>
using namespace std;
int n,m,tr[5000000];
int MAX(int a,int b)
{
	if(a>b)
	    return a;
	return b;
}
void build(int l,int r,int n)
{
	if(l==r)
	{
		scanf("%d",&tr[n]);
		return;
	}
	int m=(l+r)>>1;
	build(l,m,n<<1);
	build(m+1,r,n<<1|1);
	tr[n]=MAX(tr[n<<1],tr[n<<1|1]);
}
int out(int al,int ar,int l,int r,int n)
{
	if(al<=l&&r<=ar)
	    return tr[n];
	int m=(l+r)>>1;
	int temp=0;
	if(m>=al)
		temp=out(al,ar,l,m,n<<1);
	if(m<ar)
	    temp=MAX(out(al,ar,m+1,r,n<<1|1),temp);
	return temp;
}
int main()
{
	freopen("climb.in","r",stdin);
	freopen("climb.out","w",stdout);
	scanf("%d",&n);
	int a;
	scanf("%d",&a);
	build(1,n,1);
	scanf("%d",&m);
	for(int i=1;i<=m;i++)
	{
		int x,y;
		scanf("%d%d",&x,&y);
		printf("%d\n",out(x,y,1,n,1));
	}
	return 0;
}