记录编号 330046 评测结果 AAAAAAAATT
题目名称 延绵的山峰 最终得分 80
用户昵称 GravatarGROWL GOOD BOYส็ 是否通过 未通过
代码语言 C++ 运行时间 2.322 s
提交时间 2016-10-25 21:12:42 内存使用 72.39 MiB
显示代码纯文本
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;

const int maxn=1000000+100;

int f[maxn][21];

int N;

int main()
{
    freopen("climb.in","r",stdin);
    freopen("climb.out","w",stdout);
    scanf("%d",&N);
    for(int i=0;i<=N;i++)
    scanf("%d",&f[i][0]);
    for(int j=1;(1<<j)<=N;j++)
    {
      for(int i=0;i<=N;i++)
      {
         f[i][j]=max(f[i][j-1],f[i+(1<<(j-1))][j-1]);
      }
    }
    int Q;
    scanf("%d",&Q);
    int l,r;
    while(Q--)
    {
     scanf("%d%d",&l,&r);
     int k=0;
     while((1<<(k+1))<=r-l+1)
     {
         k++;                    
     }       
     printf("%d\n",max(f[l][k],f[r-(1<<k)+1][k]));  
    }
    fclose(stdin);
    fclose(stdout);
    return 0;
}