TLE 70
查看原帖
TLE 70
1407701
luoYiCheng_PrOI楼主2025/1/23 17:53

help me.

#include <bits/stdc++.h>
using namespace std;

int n, m;

int a[100010];
int st[100010][20];

inline int read()
{
	int x=0,f=1;char ch=getchar();
	while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
	while (ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
	return x*f;
}

int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	n = read();
	m = read();
	for (int i = 1; i <= n; i++){
		a[i] = read();
		st[i][0] = a[i];
	}
	for (int i = 1; i <= log2(n); i++){
		int _long = 1 << i;
		for (int j = 1; j <= n - _long + 1; j++)
			st[j][i] = max(st[j][i - 1], st[j + _long / 2][i - 1]);
	}
	while (m--){
		int l, r;
		l = read();
		r = read();
		int x = log2(r - l + 1);
		int _long = 1 << x;
		cout << max(st[l][x], st[r - _long + 1][x]) << endl;
	}
	return 0;
}
2025/1/23 17:53
加载中...