记录编号 205569 评测结果 AAAAAAAAAA
题目名称 延绵的山峰 最终得分 100
用户昵称 Gravatar0 是否通过 通过
代码语言 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;
}