ST表 + 快读 TLE 49pts 求助
查看原帖
ST表 + 快读 TLE 49pts 求助
1371439
xw_qwq楼主2025/1/2 21:50
#include <bits/stdc++.h>
using namespace std;
int stmax[100005][20];
inline int read()
{
	int f = 1, v = 0;
	char ch = getchar();
	while (ch < '0' || ch > '9')
	{
		if (ch == '-')
			f = -1;
		ch = getchar();
	}
	while (ch >= '0' && ch <= '9')
		v = v * 10 + (ch - '0'), ch = getchar();
	return f * v;
}
int main()
{
	int n = read(), q = read();
	for (int i = 1; i <= n; i++)
		stmax[i][0] =  read();
	for (int j = 1; (1 << j) <= n; j++)
		for (int i = 1; i + (1 << j) - 1 <= n; i++)
			stmax[i][j] = max(stmax[i][j - 1], stmax[i + (1 << j - 1)][j - 1]);
	while (q--)
	{
		int l, r;
		cin >> l >> r;
		int k = log2(r - l + 1);
		printf("%d\n", max(stmax[l][k], stmax[r - (1 << k) + 1][k]));
	}
	return 0;
}
2025/1/2 21:50
加载中...