summaryrefslogtreecommitdiff
path: root/datastructures/RMQ.cpp
diff options
context:
space:
mode:
authorGloria Mundi <gloria@gloria-mundi.eu>2024-02-26 23:11:00 +0100
committerGloria Mundi <gloria@gloria-mundi.eu>2024-02-26 23:11:00 +0100
commit6fc7af1a10832f31b9778236fcda296e626a75e3 (patch)
treef2d63a227ba75b93ee355d33531d97deffcbbd4d /datastructures/RMQ.cpp
parent2143d590b57ada51698a5ee05cb4f5adedd24033 (diff)
remove duplicate sparse table
Diffstat (limited to 'datastructures/RMQ.cpp')
-rw-r--r--datastructures/RMQ.cpp27
1 files changed, 0 insertions, 27 deletions
diff --git a/datastructures/RMQ.cpp b/datastructures/RMQ.cpp
deleted file mode 100644
index 401cca4..0000000
--- a/datastructures/RMQ.cpp
+++ /dev/null
@@ -1,27 +0,0 @@
-vector<int> values;
-vector<vector<int>> rmq;
-
-int select(int a, int b) {
- return values[a] <= values[b] ? a : b;
-}
-
-void build() {
- for(int i = 0, s = 1, ss = 1; s <= sz(values); ss=s, s*=2, i++) {
- for(int l = 0; l + s <= sz(values); l++) {
- if(i == 0) rmq[0][l] = l;
- else {
- int r = l + ss;
- rmq[i][l] = select(rmq[i-1][l], rmq[i-1][r]]);
-}}}}
-
-void init(const vector<int>& v) {
- values = v;
- rmq = vector<vector<int>>(__lg(sz(values))+1, vector<int>(sz(values)));
- build();
-}
-
-int query(int l, int r) {
- if(l >= r) return l;
- int s = __lg(r-l); r = r - (1 << s);
- return select(rmq[s][l],rmq[s][r]);
-}