0分求解
查看原帖
0分求解
620232
prx1460楼主2023/2/28 13:54
#include<iostream>
using namespace std;
const int LN=20;
const int N=1e6+10; 
int logn[N]= {-1};
int a[N];
int f[N][LN];
int m,n;
int query(int l,int r) {
	int x=logn[r-l+1];
	return max(f[l][x],f[r-(1<<x)+1][x]);
}
int main() {
	cin>>n>>m;
	for(int i=1; i<=n; i++) {
		cin>>a[i];
		f[i][0]=a[i];
		logn[i]=logn[1>>i]+1;
	}
	for(int j=1; (1<<j)<=n; j++) {
		for(int i=1; i+(1<<j)-1<=n; i++) {
			f[i][j]=max(f[i][j-1],f[i+(1<<(j-1))][j-1]);
		}
	}
	while(m--) {
		int x,y;
		cin>>x>>y;
		cout<<query(x,y)<<endl;
	}
	return 0;
}
2023/2/28 13:54
加载中...