为什么RE
查看原帖
为什么RE
258178
Benzenesir楼主2022/7/6 17:45

测评记录

#include <iostream>
#include <cstdlib>
#include <cmath> 
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <string> 
using namespace std;

const int maxN=2*1e6+100;
int n,m;
int a[maxN];
int lg[maxN];
int f[maxN][22]; 

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;
}

void init(){
	for(int i=2;i<=n;i++){
		lg[i]=lg[i>>1]+1;
	}
	for(int j=1;j<=lg[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]);//不加括号见祖宗 
		}
	}
}



int main (){ 
	ios::sync_with_stdio(false);//cin加速 
	n=read(),m=read();
	for(int i=1;i<=n;i++){
		a[i]=read();
		f[i][0]=a[i];
	}
	init();
	while(m--){
		int l,r;
		cin >> l >> r;
		printf("%d\n",max(f[l][lg[r-l+1]],f[r-(1<<(lg[r-l+1]))+1][lg[r-l+1]]));
	}
	return 0;
}


第一个点RE了,但自测答案正确
数据
求dalao指点

2022/7/6 17:45
加载中...