求助~T了11个点~
查看原帖
求助~T了11个点~
557241
waking2楼主2024/7/22 10:54
#include <iostream>
#include <cmath>
using namespace std;
const int maxn = 1e6+10;
int n,m;
int f[maxn][50];
inline int read()
{
	int x=0,f=1;char ch=getchar();
	while (ch<'0'||ch>'9'){if (ch=='-') f=-1;}
	while (ch>='0'&&ch<='9')
	{
		x=x*10+ch-48;
		ch=getchar();
	}
	return x*f;
}
int main()
{
	n = read(),m = read();
	for(int i = 1;i <= n; i++)
		f[i][0] = read();
	for(int j = 1;j <= log2(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]);
	for(int i = 1;i <= m; i++)
	{
		int x,y;
		x=read(),y=read();
		int len = (int)log2(y-x+1);
		printf("%d\n",max(f[x][len],f[y-(1<<len)+1][len]));
	}
}

为什么T了11个点啊,
求助~

2024/7/22 10:54
加载中...