记录编号 | 399184 | 评测结果 | AAAAAAAAAA | ||
---|---|---|---|---|---|
题目名称 | 延绵的山峰 | 最终得分 | 100 | ||
用户昵称 | 是否通过 | 通过 | |||
代码语言 | C++ | 运行时间 | 1.085 s | ||
提交时间 | 2017-04-25 19:52:33 | 内存使用 | 118.57 MiB | ||
#include <iostream> #include <cstdio> #include <fstream> #include <algorithm> #include <cmath> #include <deque> #include <vector> #include <queue> #include <string> #include <cstring> #include <map> #include <stack> #include <set> #define ghb great handsome boy; using namespace std; typedef long long ll; typedef int itn; const int max_n=1000005; int n,a[max_n],q,r[max_n][30],x,y; inline int read() { scanf("%d",&n); for(int i=0;i<=n;i++)scanf("%d",&a[i]); } inline int rmq() { for(int i=1;i<=n;i++) r[i][0]=a[i]; for(int i=1;(1<<i)<=n;i++) for(int j=0;j<=n;j++) { if(j+(1<<i)-1<=n)r[j][i]=max(r[j][i-1],r[j+(1<<(i-1))][i-1]); } } inline int qq(int x,int y) { int h=0; while(x+(1<<(h+1))<=y)h++; cout<<max(r[x][h],r[y-(1<<h)+1][h]); } inline int slove() { read(); rmq(); scanf("%d",&q); for(int i=1;i<=q;i++) { scanf("%d%d",&x,&y); qq(x,y); } } int main() { freopen("climb.in","r",stdin); freopen("climb.out","w",stdout); slove(); fclose(stdin); fclose(stdout); return 0; }