1 #ifndef GENESIS_UTILS_MATH_RANGE_MINIMUM_QUERY_H_
2 #define GENESIS_UTILS_MATH_RANGE_MINIMUM_QUERY_H_
100 size_t query(
size_t i,
size_t j )
const;
111 inline size_t microblock_(
size_t i )
const
113 return i / micro_size_;
119 inline size_t block_(
size_t i )
const
121 return i / block_size_;
127 inline size_t superblock_(
size_t i )
const
129 return i / super_size_;
137 return lsb_table_256_[v];
144 inline size_t m_(
size_t k,
size_t block)
const
146 return m_matrix_(k, block)+(block*block_size_);
155 size_t log2fast_(
size_t v )
const;
164 static const size_t catalan_numbers_[17][17];
165 static const unsigned char log_table_256_[256];
166 static const unsigned char lsb_table_256_[256];
176 std::vector<IntType> array_;
179 Matrix<SuccinctType> m_matrix_;
182 Matrix<size_t> m_prime_;
185 std::vector<BlockTypeType> block_types_;
188 Matrix<SuccinctType> precomputed_queries_;
207 #endif // include guard