T了后三个
查看原帖
T了后三个
1087173
guer_loser_lcz楼主2024/7/8 21:42
#include<bits/stdc++.h>
using namespace std;
int n,m,mx[100100][20],lg[100100];
int main(){
    ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	cin>>n>>m;
	for(int i=1;i<=n;i++)cin>>mx[i][0];
	for(int i=2;i<=n;i++)lg[i]=lg[(i>>1)]+1;
	for(int i=1;i<=lg[n];i++){
		for(int j=1;j+(1<<i)-1<=n;j++){
			mx[j][i]=max(mx[j][i-1],mx[j+(1<<i-1)][i-1]);
		}
	}
	for(int i=1,l,r;i<=m;i++){
		cin>>l>>r;
		int x=lg[r-l+1];
		cout<<max(mx[l][x],mx[r-(1<<x)+1][x])<<endl;
	}
	return 0;
}
2024/7/8 21:42
加载中...