Advertisement
Jasir

Sparse Table

Jun 7th, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.54 KB | None | 0 0
  1. int table[mx][22];
  2.  
  3. void init(int n){
  4.     for (int i=0;i<n;i++){
  5.         table[i][0] = ara[i];
  6.     }
  7.     int k = 20;
  8.     for(int j = 1; j <= k; j++) {
  9.         for(int i = 0; i <= n - (1 << j); i++)
  10.             table[i][j] = __gcd(table[i][j - 1], table[i + (1 << (j - 1))][j - 1]);
  11.     }
  12. }
  13.  
  14. int query(int L, int R, int n){
  15.     int ans = 0;
  16.     int k = 20;
  17.     for(int j = k; j >= 0; j--) {
  18.         if(L + (1<<j) - 1 <= R) {
  19.             ans = __gcd(ans, table[L][j]);
  20.             L += 1 << j;
  21.         }
  22.     }
  23.     return ans;
  24. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement