#include<bits/stdc++.h> using namespace std; const int N = 1e5 + 10; int n, m, x, y, a[N], dp[N][30]; int main() { scanf("%d %d", &n, &m); for(int i = 1; i <= n; i++) scanf("%d", &a[i]); for(int i = 1; i <= n; i++) dp[i][0] = a[i] ; for(int i = 1; i <= 30; i++) { for(int j = 1; j + (1 << i) - 1 <= n; j++) { dp[j][i] = max(dp[j][i - 1], dp[j + (1 << (i - 1))][i - 1]); } } for(int i = 1; i <= m; i++) { scanf("%d %d", &x, &y); int t = log2(y - x + 1); printf("%d\n", max(dp[x][t], dp[y - (1 << t) + 1][t])); } return 0; }

0 条评论

目前还没有评论...

信息

ID
1363
时间
1000ms
内存
256MiB
难度
6
标签
(无)
递交数
108
已通过
31
上传者