求助!WA:Too long on line xx!
查看原帖
求助!WA:Too long on line xx!
188769
Vanilla_chan楼主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都是一样的结果。玄学(

2020/10/18 00:09
加载中...