求助 急急急!!
查看原帖
求助 急急急!!
637499
zhangzhiqiao0130楼主2023/7/25 11:17
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstdio>
using namespace std;
int a[1000010],st[100][100],n,q;
int main()
{
	scanf("%d %d",&n,&q);
	for(int i=1;i<=n;i++)
	{
		scanf("%d ",&a[i]);
	}
	for(int i=1;i<=n;i++)
	{
		st[i][0]=a[i];
	}
	int m=log2(n);
	for(int j=1;j+(1<<j)-1<=n;j++)
	{
		for(int i=1;i+(1<<j)-1<=n;j++)
		{
			st[i][j]=max(st[i][j-1],st[i+(1<<(j-1))][j-1]);
		}
	}
	int l,r;
	while(q--)
	{
		scanf("%d %d",&l,&r);
		int len=r-l+1;
		int x=log2(len);
		int ans = max(st[l][x],st[r-len+1][x]);
		printf("%d",ans); 
	}
	return 0;
}
2023/7/25 11:17
加载中...