-
Notifications
You must be signed in to change notification settings - Fork 2
RMQ Sparse table
Khanh Nguyen Vu edited this page May 30, 2020
·
2 revisions
void init(int *A){
for(int i=1;i<=n;++i) rmq[0][i]=A[i];
for(int i=1;(1<<i)<=n;++i)
for(int j=1;j+(1<<i)-1<=n;++j)
rmq[i][j]=max(rmq[i-1][j],rmq[i-1][j+(1<<(i-1))]);
}
int get(int L,int R){
int k=log2(R-L+1);
return max(rmq[k][L],rmq[k][R-(1<<k)+1]);
}- void init(int *array): initialize the sparse table with the passed array.
- int get(int L, int R): Return the max/min value in range [L, R].
