大家好,这道题目我本地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 程序输出与正确输出一致