MLE??? 21 PTS???
查看原帖
MLE??? 21 PTS???
1345055
Better_Tomorrow楼主2025/1/23 16:05
#include<bits/stdc++.h>

using namespace std;
int a[1005],l[1005],r[1005],dp[10005][10005],logx[10005];
int RMB(int l,int r) {
	int k = 0;
	while (l + (1 << (r + 1)) - 1 <= r) {
		k++;
	}
	return max(dp[1][k],dp[r-(1<<k)+1][k]);
}
inline int read() {
	int 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() {
	int n = read();
	int m = read();
	for (int i = 1; i <= n; i++) cin >> dp[i][0];
	
	for (int i = 2; i <= n; i++) 
		logx[i] = logx[i/2]+1;
	
	int logn = logx[n];
	
	for(int j=1;j<=logn+1;j++)
		for(int i=1;i+(1<<j)-1<=n;i++)
			dp[i][j]=max(dp[i][j-1],dp[i+(1<<(j-1))][j-1]); 
	
	for(int i=1;i<=m;i++){
		int l,r;
		l = read();
		r = read();
		int s=logx[r-l+1];
		cout << max(dp[l][s],dp[r-(1<<s)+1][s]) << endl;
	}
	return 0;
}
2025/1/23 16:05
加载中...