末日时在干什么?有没有空?能RE吗?
查看原帖
末日时在干什么?有没有空?能RE吗?
482730
aSunnyDay楼主2021/2/19 12:10

大家好,这道题目我本地AC,提交RE,烦请各位大佬过目,谢谢!

#include<bits/stdc++.h>
#define N 1000009
#define K 30
using namespace std;
typedef long long ll;
ll n,m,lg[N],st[N][K],a[N];
ll read(){
	ll x=0,f=1;
	char c=getchar();
	while(c<'0'||c>'9'){if(c=='-') f=-1;c=getchar();}
	while(c>='0'&&c<='9'){x=x*10+c-'0',c=getchar();}
	return x*f;
}
ll query(ll l,ll r){
	ll k=lg[r-l+1];
	return max(st[l][k],st[r-(1<<k)+1][k]);
}
int main(){
	ios::sync_with_stdio(false);
	n=read(),m=read();
	for(ll i=1;i<=n;++i) a[i]=read();
	for(ll i=1;i<=n;++i) lg[i]=log2(i),st[i][0]=a[i];
	cout<<lg[n]<<endl;
	for(ll k=1;k<=lg[n];++k)
		for(ll i=1;i<=n-(1<<k)+1;++i)
			st[i][k]=max(st[i][k-1],st[i+(1<<(k-1))][k-1]);
//	for(ll k=0;k<=n;++k,cout<<endl)
//		for(ll i=1;i<=n;++i)
//			cout<<st[i][k]<<" ";
	for(ll i=1;i<=m;++i){
		ll l,r;
		cin>>l>>r;
		cout<<query(l,r)<<endl;
	}
	return 0;
}

RE数据: 10 10

34510650 17635986 629392810 531021973 464687714 484934800 168882190 645518365 922058895 397659551

2 9

1 8

1 7

2 10

3 9

4 10

3 10

1 7

2 10

2 8

输出:

922058895

645518365

629392810

922058895

922058895

922058895

922058895

629392810

922058895

645518365 程序输出与正确输出一致

2021/2/19 12:10
加载中...