记录编号 522310 评测结果 AAAAAAAAAA
题目名称 延绵的山峰 最终得分 100 重新评测
用户昵称 REALIZE_BEYOND 是否通过 通过
代码语言 C++ 运行时间 0.284 s
提交时间 2018-11-09 23:20:32 内存使用 22.23 MiB IP
显示代码纯文本
#include<cstdio>
#include<iostream>
#define ls l,mid,rt<<1
#define rs mid+1,r,(rt<<1)|1
#define maxn 1000006

using namespace std;
int n,q,t[maxn<<2],a[maxn];
void build_(int l,int r,int rt){
	if(l==r){
		t[rt]=a[l];
		return;
	}
	int mid=(l+r)>>1;
	build_(ls);build_(rs);
	t[rt]=max(t[rt<<1],t[rt<<1|1]);
}
int getmax(int l,int r,int rt,int x,int y){
	int mid=(l+r)>>1;
	int ans=-666;
	if(x<=l&&y>=r) return t[rt];
	if(mid>=x) ans=max(ans,getmax(ls,x,y));
	if(mid<y)  ans=max(ans,getmax(rs,x,y));
	return ans;
}
int main(){
	freopen("climb.in","r",stdin);
	freopen("climb.out","w",stdout);
	scanf("%d",&n);
	n++;
	for(int i=1;i<=n;i++) scanf("%d",&a[i]);
	build_(1,n,1);
	scanf("%d",&q);
	int l,r;
	while(q--){
		scanf("%d%d",&l,&r);
		l++;r++;
		printf("%d\n",getmax(1,n,1,l,r));
	}
	return 0;
}