24分求助
查看原帖
24分求助
247159
林楚颜楼主2020/12/12 16:55
#include<bits/stdc++.h>
using namespace std;
int f[10050][25],x,y;
long long n,m,ans,k;
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		cin>>f[i][0];
	}
	for(int j=1;j<20;j++)
	{
		for(int i=0;i+(1<<j)<=n+1;i++)
		{
			f[i][j]=max(f[i][j-1],f[i+(1<<(j-1))][j-1]);
		}
	}
	for(int i=1;i<=m;i++)
	{
		cin>>x>>y;
		k=log2(y-x+1);
		ans=max(f[x][k],f[y-(1<<k)+1][k]);
		cout<<ans<<endl;
	}
  return 0;
}

求问大佬

2020/12/12 16:55
加载中...