RE求助
查看原帖
RE求助
926886
kind_Ygg楼主2024/4/20 10:29
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+5;
int l,r;
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 fang(int x){
	return 1<<x;
}
int n,m,lg2[N],st[N][32],a;
int work(int n){
	int k=1;
	lg2[1]=0;
	lg2[2]=1;
	for(int i=3;i<=n;i++){
		if(int(pow(2,k+1))==i)
			k++;
		lg2[i]=k;
	}
}
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	n=read();
	m=read();
	work(n);
	for(int i=1;i<=n+1;i++){ 
		a=read();
		st[i][0]=a;
	}
	for(int i=1;fang(i)<=n;i++){//序列长度 
		int k=fang(i); 
		for(int j=1;j+k-1<=n;j++){
			st[j][i]=max(st[j][i-1],st[j+fang(i-1)][i-1]);
		}
	}
	while(m--){
		cin>>l>>r;
		int k=lg2[r-l+1];
		cout<<max(st[l][k],st[r-fang(k)+1][k])<<'\n';
	}
	return 0;
}

下数据点1,和输出一模一样,评测机说我RE

2024/4/20 10:29
加载中...