求助!WA:Too long on line xx!
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<map>
#include<set>
#include<queue>
#include<vector>
#define IL inline
#define re register
#define LL long long
#define ULL unsigned long long
#define re register
using namespace std;
int n,m;
int lg[2000010];
int mx[2000010][24];
void pre()
{
lg[1]=0;
for(int i=2;i<=2000010;i++) lg[i]=lg[i>>1]+1;
for(int j=1;j<=21;j++)
{
for(int i=1;i+(1<<j)-1<=n;i++)
{
mx[i][j]=max(mx[i][j-1],mx[i+(1<<(j-1))][j-1]);
}
}
}
int ask(int l,int r)
{
return max(mx[l][lg[r-l+1]],mx[r-(1<<lg[r-l+1])+1][lg[r-l+1]]);
}
int main()
{
scanf("%d%d",&n,&m);
int a,b;
for(int i=1;i<=n;i++) scanf("%d",&mx[i][0]);
pre();
while(m--){
cin>>a>>b;
printf("%d\n",ask(a,b));
}
return 0;
}
我感觉我的代码没有问题,正确性在“忠诚”那一题上验证过了(AC),猜测与O2有关,但是无论是混输入、cout/cin、scanf/printf都是一样的结果。玄学(