为何TLE
查看原帖
为何TLE
744562
Aya_tt楼主2022/7/1 23:15
#include<iostream>
#include<cmath>
using namespace std;
int n,m,f[100010][32];
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;
}
inline int fin(int l,int r){
	int k = log(r - l + 1) / log(2);
	return max(f[l][k],f[r - (1 << k) + 1][k]);
}
int main(){
	n = read(),m = read();
	for(register int i = 1;i <= n;i++){
		f[i][0] = read();
	}
	for(int j = 1;(1<<j) <= n;j++){
		for(int i = 1;i <= n - (1<<j) + 1;i++){
			f[i][j] = max(f[i][j - 1],f[i + (1<<(j - 1))][j - 1]);
		}
	}
	for(register int i = 1;i <= m;i++){
		int a,b;
		cin>>a>>b;
		cout<<fin(a,b)<<endl;
	}
} 
2022/7/1 23:15
加载中...