记录编号 398271 评测结果 AAAAAAAAAA
题目名称 延绵的山峰 最终得分 100
用户昵称 GravatarTARDIS 是否通过 通过
代码语言 C++ 运行时间 0.302 s
提交时间 2017-04-21 20:54:15 内存使用 114.77 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#define coder goodboy
using namespace std;
typedef long long LL;typedef unsigned long long ULL;
inline int max(int a, int b) { return a<b?b:a; }
FILE *fin,*fout;
const int maxn=10001000;
int n,m,l,r,maxv[2*maxn+3],h[maxn];
void buildtree(int o,int l,int r){
	if (l==r){
		maxv[o]=h[r];
		return;
	}
	else{
		int mid=l+(r-l)/2;
		buildtree(o*2,l,mid);
		buildtree(o*2+1,mid+1,r);
		maxv[o]=max(maxv[o*2],maxv[o*2+1]);
	}
}
int query(int o,int L,int R){
	if (l<=L&&R<=r){
		return maxv[o];
	}
	int mid=L+(R-L)/2;int ans=0;
	if (R<l||L>r){
		return 0;
	}
	if (mid>=l) ans=max(ans,query(o*2,L,mid));
	if (mid<r) ans=max(ans,query(o*2+1,mid+1,R));
	return ans;
}
void in(){
	fin=fopen("climb.in","r");
	fout=fopen("climb.out","w");
	fscanf(fin,"%d",&n);
	//memset(maxv,-1,sizeof(maxv));
	for (int i=1;i<=n+1;i++){
		fscanf(fin,"%d",&h[i]);
	}
	buildtree(1,1,n+1);
}
void deal(){
	fscanf(fin,"%d",&m);
	for (int i=1;i<=m;i++){
		fscanf(fin,"%d%d",&l,&r);l++;r++;
		fprintf(fout,"%d\n",query(1,1,n+1));
	}
} 
int main(){
	in();
	deal();
	return 0;
}