WA4,60分,请求支援
查看原帖
WA4,60分,请求支援
767155
a_small_penguin楼主2024/7/28 18:30
#include<bits/stdc++.h>
using namespace std;
int n,q;
int logs2[50000];
int f[50000][17]; 
int f2[50000][17]; 
int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	memset(f2,0x3f,sizeof(f2));
	cin >> n >> q;
	for(int i = 1;i<=n;i++){
		cin >> f[i][0];
		f2[i][0] = f[i][0];
	}
	for(int i = 2;i<=n;i++){
		logs2[i] = logs2[i/2]+1;
	}
	for(int i = 1;i<=16;i++){
		for(int j = 1;j+(1 << i)-1 <= n;j++){
			f[j][i] = max(f[j][i-1],f[j+(1<<(i-1))][i-1]);
			f2[j][i] = min(f2[j][i-1],f2[j+(1<<(i-1))][i-1]);
		}
	}
	for(int i = 0;i<q;i++){
		int l,r;
		
		cin >> l >> r;
		int s = logs2[r-l+1];
		cout << max(f[l][s],f[r-(1<<s) + 1][s])-min(f2[l][s],f2[r-(1<<s) + 1][s]) << "\n";
	}
	return 0;
}

2024/7/28 18:30
加载中...