80分代码求调(后两点TLE)
查看原帖
80分代码求调(后两点TLE)
849486
wsqin_qwq楼主2023/1/12 16:14
#include<iostream>
#include<cmath>
#include<cstdio>
using namespace std;
int f[100005][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(){
	int n,m;
	cin>>n>>m;
	for(int i=1; i<=n; i++){
		scanf("%d",&f[i][0]);
	}
	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 k=log2(y-x+1);
		cout<<max(f[x][k],f[y-(1<<k)+1][k])<<endl;
	}
	return 0;
}

感谢大佬

2023/1/12 16:14
加载中...