24分求助(MLE)
查看原帖
24分求助(MLE)
543398
panzihe楼主2023/7/16 17:04
#include<bits/stdc++.h>
using namespace std;
int f(long long a, long long n)
{
	int sum = 1; 
	while(n--)
	{
		sum *= a;
	}
	return sum;
}
int log(int a)
{
	int i = 1;
	for(; i * i <= a; i++){}
	return i - 1;
}
int a[100001][400];
int main()
{
	ios::sync_with_stdio(0);cin.tie(0);
	int n, m;
	cin >> n >> m;
	for(int i = 1; i <= n; i++)
	{
		cin >> a[i][0];
	}
	for(int j = 1; j <= log2(n); j++)
	{
		for(int i = 1; i <= n; i++)
		{
			a[i][j] = max(a[i][j - 1], a[i + f(2, j - 1)][j - 1]);
		}
	}
	for(int i = 1; i <= m; i++)
	{
		int l, r;
		cin >> l >> r;
		cout << max(a[l][log(r - l + 1)], a[r - (1 << log(r - l + 1)) + 1][log(r - l + 1)]) << endl;
	}
	return 0;
}
2023/7/16 17:04
加载中...