求助 最后两点t
查看原帖
求助 最后两点t
221551
Bker_楼主2022/8/13 08:33

rt 今天默写st表的时候本地样例过了 但是过评测的时候最后两点t 求助各位dalao帮助

#include <bits/stdc++.h>
using namespace std;

	
	int a[2000010][25] = {0};
	int n , m  ;
	
inline int read(){
	int x = 0 ; int f = 1 ; char c = getchar() ;
	while(c < '0' || c > '9')	{if(c == '-')	f = -1 ; c = getchar() ;}
	while(c >= '0' && c <= '9')	{x = x * 10 + c - 48 ; c = getchar() ;}
	return x * f ;
}

void pre(){
	for(register int i = 1 ; i <= n ; i++)
		a[i][0] = read() ;
}

void st(){
	for(register int j = 1 ; (1 << j) <= n ; j++)
		for(register int i = 1 ; i + (1 << j) - 1 <= n ; i++)
			a[i][j] = max(a[i][j - 1] , a[i + (1 << (j - 1))][j - 1]) ;
}

inline int rmq(int l , int r){
	int k = log2(r - l + 1) ;
	return max(a[l][k] , a[r - (1 << k) + 1][k]) ;
}

int main(){


	n = read() , m = read() ;
	
	pre() ;
	
	st() ;
	
	while(m--){
		int l , r ;
		
		l =read() , r = read();
		
		cout<<rmq(l , r)<<endl;
		
	}

	return 0 ;
}
2022/8/13 08:33
加载中...