RE,21pts,数组开大咋也没用。。
查看原帖
RE,21pts,数组开大咋也没用。。
1420936
Sparkle_ovo楼主2024/10/1 16:41
#include<bits/stdc++.h>
#define itn int
#define ll unsigned long long
using namespace std;
int lg[640];
ll f[700001][100];
inline ll read() {
	ll x=0,f=1;
	char ch=getchar();
	while (ch<'0'||ch>'9') {
		if (ch=='-') f=-1;
		ch=getchar();
	}
	while (ch>='0'&&ch<='9') {
		x=x*10+ch-48;
		ch=getchar();
	}
	return x*f;
}
int main() {
	ll n=read(),m=read();
	lg[0]=0;
	for(int i=1; i<=n; i++) {
		f[i][0]=read();
		lg[i]=lg[i>>1]+1;
	}
	for(int i=1; i<=lg[n]; i++) {
		for(int j=1; (1<<i)+j-1<=n; j++) {
			f[j][i]=max(f[j][i-1],f[j+(1<<(i-1))][i-1]);
		}
	}
	while(m--) {
		ll l=read(),r=read();
		ll len=r-l+1,lglen=lg[len]+0;
		if(len==1)printf("%lld\n",f[l][0]);
		else
			printf("%lld\n",max(f[l][lglen-1],f[r-(1<<(lglen-1))+1][lglen-1]));
	}
	system("pause");
	return 0;
}
2024/10/1 16:41
加载中...