记录编号 558444 评测结果 AAAAAAAAAA
题目名称 延绵的山峰 最终得分 100
用户昵称 Gravatar李宴彬 是否通过 通过
代码语言 C++ 运行时间 0.862 s
提交时间 2021-01-01 11:12:34 内存使用 163.49 MiB
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
const int maxx=2e6+10;
int f[maxx][20];
int n,m;
int lg[maxx];
int main(){
	
	freopen("climb.in","r",stdin);
	freopen("climb.out","w",stdout);
	lg[0]=-1;
	for(int i=1;i<=maxx;i++) lg[i]=lg[i>>1]+1;
	scanf("%d",&n);
	for(int i=0;i<=n;i++)
		scanf("%d",&f[i][0]);
	for(int j=1;j<=lg[n];j++)
	{
		for(int i=0;i+(1<<(j-1))<=n;i++)
		f[i][j]=max(f[i][j-1],f[i+(1<<(j-1))][j-1]);
	}
	scanf("%d",&m);
	for(int i=1;i<=m;i++)
	{
		int a,b;
		scanf("%d%d",&a,&b);
		int k=lg[b-a+1];
	cout<<max(f[a][k],f[b-(1<<k)+1][k])<<endl;
	}
	return 0;
}