Open
Description
Reference: Codeforces by Franchesco_virgoliniiii
struct RMQ {
vector<vector<int>> table;
RMQ(vector<int> &v) : table(20, vector<int>(v.size())) {
int n = v.size();
for (int i = 0; i < n; i++) table[0][i] = v[i];
for (int j = 1; (1<<j) <= n; j++)
for (int i = 0; i + (1<<j-1) < n; i++)
table[j][i] = max(table[j-1][i], table[j-1][i + (1<<j-1)]);
}
int query(int a, int b) {
int j = 31 - __builtin_clz(b-a+1);
return max(table[j][a], table[j][b-(1<<j)+1]);
}
};
Metadata
Metadata
Assignees
Labels
No labels