记录编号 96881 评测结果 AAAAAAAAAA
题目名称 延绵的山峰 最终得分 100
用户昵称 GravatarOI永别 是否通过 通过
代码语言 C++ 运行时间 0.123 s
提交时间 2014-04-15 21:30:00 内存使用 8.31 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#define max(x,y) x>y?x:y
using namespace std;
int n,q,m,d[1<<21];
inline int getint(){
	char ch;
	int x = 0;
	while (!isdigit(ch = getchar()));
	x = ch - 48;
	while (isdigit(ch = getchar())) x = x * 10 + ch - 48;
	return x;
}
int main(){
	freopen("climb.in","r",stdin);
	freopen("climb.out","w",stdout);
	n = getint();n++; 
	   for(m=1;m+2<=n;m=m*2+1);m++;
	       for(int i=1;i<=n;i++) 
		   d[m + i] = getint();
		      for(int i=m-1;i>0;i--)
			  d[i]=max(d[i<<1],d[(i<<1)+1]);
			     q = getint(); 
				 int x,y,A;    
				 while(q--){
						x = getint(); y = getint();
						  for(x+=m,y+=m+2,A=0;x^y^1;x>>=1,y>>=1){
							 if((x&1)==0) A=max(A,d[x+1]);
							if((y&1)==1) A=max(A,d[y-1]);               
						}     printf("%d\n",A);
			    } 
return 0;
}