From aab098de35a9e1750fa5009d67d834e14262ad18 Mon Sep 17 00:00:00 2001 From: Edimar Chaves Jr Date: Wed, 2 Oct 2019 13:04:57 -0300 Subject: [PATCH 1/2] add Sparse_Table #Hacktoberfest --- Sparse Table/sparse_table.cpp | 45 +++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 Sparse Table/sparse_table.cpp diff --git a/Sparse Table/sparse_table.cpp b/Sparse Table/sparse_table.cpp new file mode 100644 index 0000000..c3b5a2c --- /dev/null +++ b/Sparse Table/sparse_table.cpp @@ -0,0 +1,45 @@ +/** + * autor: Edimar Chaves Jr. + * 02/10/2019 12:31:11 + * + * Solves static Range Maximum(or minimum with simple changes) Query problem. + * Sparse Table +**/ + +#include + +using namespace std; + +#define MAXN 100009 +#define LOGN 20 + +int a[MAXN]; +int table[LOGN][MAXN]; + +struct sparse_table +{ + void build(int n){ + + for (int i = 1; i <= n;i++) + table[0][i] = a[i]; + + for(int i = 1; (1 << i) <= n; i++){ + + int k = n - (1 << i) + 1; + + for (int j = 1; j <= k; j++){ + table[i][j] = max(table[i - 1][j], table[i - 1][j + (1 << (i - 1))]); + } + } + } + + int query(int l,int r){ + int k =__lg(r - l + 1); + + return max(table[k][l], table[k][r - (1 << k) + 1]); + } + +}; + + +int main(){ return 0;} \ No newline at end of file From 9759e9b839e218e648f4a13309cc00b9c5bfc910 Mon Sep 17 00:00:00 2001 From: Edimar Chaves Jr <48692406+EdimarJunior@users.noreply.github.com> Date: Wed, 2 Oct 2019 14:19:18 -0300 Subject: [PATCH 2/2] Update sparse_table.cpp --- Sparse Table/sparse_table.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Sparse Table/sparse_table.cpp b/Sparse Table/sparse_table.cpp index c3b5a2c..a541c25 100644 --- a/Sparse Table/sparse_table.cpp +++ b/Sparse Table/sparse_table.cpp @@ -14,10 +14,11 @@ using namespace std; #define LOGN 20 int a[MAXN]; -int table[LOGN][MAXN]; struct sparse_table { + int table[LOGN][MAXN]; + void build(int n){ for (int i = 1; i <= n;i++) @@ -42,4 +43,4 @@ struct sparse_table }; -int main(){ return 0;} \ No newline at end of file +int main(){ return 0;}