求助!WA:Too long on line xx!

回复帖子

@hsh778205 2020-10-18 00:09 回复

求助!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都是一样的结果。玄学(

反馈
如果你认为某个帖子有问题,欢迎向洛谷反馈,以帮助更多的同学。



请具体说明理由,以增加反馈的可信度。