- 
                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].
 
