80分RE
查看原帖
80分RE
175801
黑虎阿福楼主2020/8/19 23:22

80分RE

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int n,q,maxh[100001][100],a,b,d,x,y,z;
int read(){
	int x=0,f=1;
	char ch=getchar();
	while(!isdigit(ch)){
		if(ch=='-')
		f=-1;
		ch=getchar();
	}
	while(isdigit(ch)){
		x=x*10+(ch-'0');
		ch=getchar();
	}
	return x*f;
}
void ST(){
	d=log(n)/log(2)+1;
	for(b=1;b<d;b++){
		for(a=1;a<=n-(1<<b)+1;a++){
			maxh[a][b]=max(maxh[a][b-1],maxh[a+(1<<(b-1))][b-1]);
		}
	}
}
int main(){
	n=read();
	q=read();
	for(a=1;a<=n;a++)
	maxh[a][0]=read();
	ST();
	for(a=1;a<=q;a++){
		x=read();
		y=read();
		d=log(y-x)/log(2);
		z=max(maxh[x][d],maxh[y-(1<<d)+1][d]);
		printf("%d\n",z);
	}
	return 0;
}
2020/8/19 23:22
加载中...