From 815c935498ccc7e5144ab776b60464b6fb980bf7 Mon Sep 17 00:00:00 2001
From: github-actions <${GITHUB_ACTOR}@users.noreply.github.com>
Date: Mon, 8 Feb 2021 17:27:23 +0000
Subject: [PATCH] Documentation for b12dad038caf628619746285e9ad4ad80b458446
---
annotated.html | 6 +-
annotated_dup.js | 5 +-
classes.html | 6 +-
...tent__seg__tree__lazy__prop_8cpp__incl.map | 6 +
...tent__seg__tree__lazy__prop_8cpp__incl.md5 | 1 +
...tent__seg__tree__lazy__prop_8cpp__incl.svg | 68 ++
d2/de9/heavy__light__decomposition_8cpp.html | 2 +-
...ersistent__seg__tree__lazy__prop_8cpp.html | 271 ++++++
.../persistent__seg__tree__lazy__prop_8cpp.js | 7 +
...8dca7b867074164d5f45b0f3851269d_cgraph.map | 10 +
...8dca7b867074164d5f45b0f3851269d_cgraph.md5 | 1 +
...8dca7b867074164d5f45b0f3851269d_cgraph.svg | 239 ++++++
...7b867074164d5f45b0f3851269d_cgraph_org.svg | 151 ++++
...66f6b31b5ad750f1fe042a706a4e3d4_cgraph.map | 11 +
...66f6b31b5ad750f1fe042a706a4e3d4_cgraph.md5 | 1 +
...66f6b31b5ad750f1fe042a706a4e3d4_cgraph.svg | 254 ++++++
...b31b5ad750f1fe042a706a4e3d4_cgraph_org.svg | 166 ++++
...nge__queries_1_1per_seg_tree_1_1_node.html | 137 +++
...range__queries_1_1per_seg_tree_1_1_node.js | 7 +
d5/d88/md__d_i_r_e_c_t_o_r_y.html | 1 +
...ries_1_1per_seg_tree_1_1_node-members.html | 113 +++
...__queries_1_1per_seg_tree__coll__graph.map | 7 +
...__queries_1_1per_seg_tree__coll__graph.md5 | 1 +
...__queries_1_1per_seg_tree__coll__graph.svg | 178 ++++
...eries_1_1per_seg_tree__coll__graph_org.svg | 90 ++
.../classrange__queries_1_1per_seg_tree.html | 788 ++++++++++++++++++
d8/d28/classrange__queries_1_1per_seg_tree.js | 16 +
...fe4e431f3e09c274ecd7d2d58dcb865_cgraph.map | 4 +
...fe4e431f3e09c274ecd7d2d58dcb865_cgraph.md5 | 1 +
...fe4e431f3e09c274ecd7d2d58dcb865_cgraph.svg | 38 +
...83bcabf5a8db8b0d8d156a4c1bcd4c3_cgraph.map | 5 +
...83bcabf5a8db8b0d8d156a4c1bcd4c3_cgraph.md5 | 1 +
...83bcabf5a8db8b0d8d156a4c1bcd4c3_cgraph.svg | 53 ++
...e7f57935b3bb9446f11c239fd89ae79_cgraph.map | 4 +
...e7f57935b3bb9446f11c239fd89ae79_cgraph.md5 | 1 +
...e7f57935b3bb9446f11c239fd89ae79_cgraph.svg | 39 +
...484002bcb701820d55f32ea5d525571_cgraph.map | 6 +
...484002bcb701820d55f32ea5d525571_cgraph.md5 | 1 +
...484002bcb701820d55f32ea5d525571_cgraph.svg | 159 ++++
...02bcb701820d55f32ea5d525571_cgraph_org.svg | 71 ++
...8ae4b1835e5e8aec32f68c5059ed4d4_cgraph.map | 5 +
...8ae4b1835e5e8aec32f68c5059ed4d4_cgraph.md5 | 1 +
...8ae4b1835e5e8aec32f68c5059ed4d4_cgraph.svg | 55 ++
...16c0c87b29119f066041d6e71ab50e0_cgraph.map | 5 +
...16c0c87b29119f066041d6e71ab50e0_cgraph.md5 | 1 +
...16c0c87b29119f066041d6e71ab50e0_cgraph.svg | 61 ++
...87494e6cf012d28c4f5b9d1c15f9c5d_cgraph.map | 8 +
...87494e6cf012d28c4f5b9d1c15f9c5d_cgraph.md5 | 1 +
...87494e6cf012d28c4f5b9d1c15f9c5d_cgraph.svg | 195 +++++
...4e6cf012d28c4f5b9d1c15f9c5d_cgraph_org.svg | 107 +++
d9/d31/coin__change__topdown_8cpp.html | 2 +-
...ange__queries_1_1per_seg_tree-members.html | 121 +++
dd/d69/namespacerange__queries.html | 13 +-
dd/d69/namespacerange__queries.js | 3 +-
..._1_1per_seg_tree_1_1_node__coll__graph.map | 4 +
..._1_1per_seg_tree_1_1_node__coll__graph.md5 | 1 +
..._1_1per_seg_tree_1_1_node__coll__graph.svg | 42 +
dir_074119ce3a874b57120c49a0cc4bb5ad.html | 3 +
dir_074119ce3a874b57120c49a0cc4bb5ad.js | 1 +
files.html | 3 +-
functions_c.html | 3 +
functions_func_c.html | 3 +
functions_func_l.html | 3 +
functions_func_n.html | 3 +
functions_func_q.html | 1 +
functions_func_s.html | 1 +
functions_func_u.html | 1 +
functions_l.html | 3 +
functions_n.html | 3 +
functions_p.html | 3 +
functions_q.html | 1 +
functions_r.html | 1 +
functions_s.html | 1 +
functions_u.html | 1 +
functions_v.html | 4 +
functions_vars.html | 10 +
globals_func_m.html | 1 +
globals_func_t.html | 1 +
globals_m.html | 1 +
globals_t.html | 1 +
hierarchy.html | 50 +-
hierarchy.js | 4 +-
inherit_graph_50.md5 | 2 +-
inherit_graph_50.svg | 8 +-
inherit_graph_51.map | 2 +-
inherit_graph_51.md5 | 2 +-
inherit_graph_51.svg | 12 +-
inherit_graph_52.map | 2 +-
inherit_graph_52.md5 | 2 +-
inherit_graph_52.svg | 15 +-
inherit_graph_53.map | 2 +-
inherit_graph_53.md5 | 2 +-
inherit_graph_53.svg | 12 +-
inherit_graph_54.map | 2 +-
inherit_graph_54.md5 | 2 +-
inherit_graph_54.svg | 12 +-
inherit_graph_55.map | 2 +-
inherit_graph_55.md5 | 2 +-
inherit_graph_55.svg | 12 +-
inherit_graph_56.map | 2 +-
inherit_graph_56.md5 | 2 +-
inherit_graph_56.svg | 12 +-
inherit_graph_57.map | 2 +-
inherit_graph_57.md5 | 2 +-
inherit_graph_57.svg | 12 +-
inherit_graph_58.map | 2 +-
inherit_graph_58.md5 | 2 +-
inherit_graph_58.svg | 12 +-
inherit_graph_59.map | 2 +-
inherit_graph_59.md5 | 2 +-
inherit_graph_59.svg | 12 +-
inherit_graph_60.map | 3 +
inherit_graph_60.md5 | 1 +
inherit_graph_60.svg | 22 +
inherit_graph_61.map | 3 +
inherit_graph_61.md5 | 1 +
inherit_graph_61.svg | 22 +
inherits.html | 22 +-
namespaces.html | 2 +
navtreedata.js | 12 +-
navtreeindex10.js | 29 +-
navtreeindex4.js | 22 +-
navtreeindex5.js | 24 +-
navtreeindex6.js | 62 +-
navtreeindex7.js | 56 +-
navtreeindex8.js | 92 +-
navtreeindex9.js | 56 +-
search/all_10.js | 138 +--
search/all_11.js | 247 +++---
search/all_12.js | 52 +-
search/all_13.js | 242 +++---
search/all_14.js | 517 ++++++------
search/all_15.js | 259 +++---
search/all_16.js | 132 +--
search/all_17.js | 101 +--
search/all_18.js | 172 ++--
search/all_19.js | 12 +-
search/all_1a.js | 8 +-
search/all_1b.js | 6 +-
search/all_1c.js | 186 ++---
search/all_4.js | 12 +-
search/all_5.js | 4 +-
search/all_6.js | 4 +-
search/all_d.js | 157 ++--
search/all_e.js | 280 +++----
search/all_f.js | 169 ++--
search/classes_0.js | 46 +-
search/classes_1.js | 126 +--
search/classes_10.js | 9 +-
search/classes_11.js | 80 +-
search/classes_12.js | 95 +--
search/classes_13.js | 50 +-
search/classes_14.js | 66 +-
search/classes_15.js | 42 +-
search/classes_16.js | 62 +-
search/classes_17.js | 4 +-
search/classes_18.js | 2 +-
search/classes_2.js | 72 +-
search/classes_3.js | 32 +-
search/classes_4.js | 34 +-
search/classes_5.js | 34 +-
search/classes_6.js | 12 +-
search/classes_7.js | 18 +-
search/classes_8.js | 196 ++---
search/classes_9.js | 2 +-
search/classes_a.js | 4 +-
search/classes_b.js | 36 +-
search/classes_c.js | 76 +-
search/classes_d.js | 41 +-
search/classes_e.js | 24 +-
search/classes_f.js | 35 +-
search/defines_0.js | 4 +-
search/defines_1.js | 4 +-
search/defines_2.js | 4 +-
search/defines_3.js | 2 +-
search/defines_4.js | 4 +-
search/defines_5.js | 4 +-
search/defines_6.js | 4 +-
search/files_0.js | 2 +-
search/files_1.js | 8 +-
search/files_10.js | 27 +-
search/files_11.js | 16 +-
search/files_12.js | 10 +-
search/files_13.js | 38 +-
search/files_14.js | 12 +-
search/files_15.js | 8 +-
search/files_16.js | 4 +-
search/files_17.js | 2 +-
search/files_2.js | 30 +-
search/files_3.js | 26 +-
search/files_4.js | 20 +-
search/files_5.js | 6 +-
search/files_6.js | 22 +-
search/files_7.js | 16 +-
search/files_8.js | 16 +-
search/files_9.js | 8 +-
search/files_a.js | 6 +-
search/files_b.js | 10 +-
search/files_c.js | 30 +-
search/files_d.js | 22 +-
search/files_e.js | 18 +-
search/files_f.js | 8 +-
search/functions_0.js | 6 +-
search/functions_1.js | 162 ++--
search/functions_10.js | 172 ++--
search/functions_11.js | 20 +-
search/functions_12.js | 171 ++--
search/functions_13.js | 396 ++++-----
search/functions_14.js | 194 ++---
search/functions_15.js | 86 +-
search/functions_16.js | 46 +-
search/functions_17.js | 150 ++--
search/functions_18.js | 6 +-
search/functions_19.js | 2 +-
search/functions_1a.js | 4 +-
search/functions_1b.js | 186 ++---
search/functions_2.js | 130 +--
search/functions_3.js | 174 ++--
search/functions_4.js | 194 ++---
search/functions_5.js | 116 +--
search/functions_6.js | 222 ++---
search/functions_7.js | 166 ++--
search/functions_8.js | 44 +-
search/functions_9.js | 218 ++---
search/functions_a.js | 6 +-
search/functions_b.js | 18 +-
search/functions_c.js | 109 +--
search/functions_d.js | 192 ++---
search/functions_e.js | 111 +--
search/functions_f.js | 116 +--
search/groups_0.js | 2 +-
search/groups_1.js | 4 +-
search/groups_2.js | 2 +-
search/namespaces_0.js | 2 +-
search/namespaces_1.js | 4 +-
search/namespaces_10.js | 8 +-
search/namespaces_11.js | 32 +-
search/namespaces_12.js | 2 +-
search/namespaces_13.js | 2 +-
search/namespaces_14.js | 4 +-
search/namespaces_15.js | 4 +-
search/namespaces_16.js | 2 +-
search/namespaces_2.js | 8 +-
search/namespaces_3.js | 10 +-
search/namespaces_4.js | 4 +-
search/namespaces_5.js | 6 +-
search/namespaces_6.js | 4 +-
search/namespaces_7.js | 4 +-
search/namespaces_8.js | 2 +-
search/namespaces_9.js | 4 +-
search/namespaces_a.js | 10 +-
search/namespaces_b.js | 14 +-
search/namespaces_c.js | 12 +-
search/namespaces_d.js | 2 +-
search/namespaces_e.js | 6 +-
search/namespaces_f.js | 6 +-
search/pages_0.js | 4 +-
search/pages_1.js | 2 +-
search/pages_2.js | 2 +-
search/pages_3.js | 2 +-
search/pages_4.js | 4 +-
search/related_0.js | 10 +-
search/typedefs_0.js | 2 +-
search/typedefs_1.js | 2 +-
search/typedefs_2.js | 4 +-
search/variables_0.js | 4 +-
search/variables_1.js | 10 +-
search/variables_10.js | 8 +-
search/variables_11.js | 20 +-
search/variables_12.js | 20 +-
search/variables_13.js | 2 +-
search/variables_14.js | 6 +-
search/variables_15.js | 4 +-
search/variables_16.js | 2 +-
search/variables_17.js | 2 +-
search/variables_2.js | 2 +-
search/variables_3.js | 6 +-
search/variables_4.js | 4 +-
search/variables_5.js | 4 +-
search/variables_6.js | 10 +-
search/variables_7.js | 2 +-
search/variables_8.js | 16 +-
search/variables_9.js | 8 +-
search/variables_a.js | 2 +-
search/variables_b.js | 8 +-
search/variables_c.js | 14 +-
search/variables_d.js | 8 +-
search/variables_e.js | 19 +-
search/variables_f.js | 4 +-
289 files changed, 8004 insertions(+), 4321 deletions(-)
create mode 100644 d2/d86/persistent__seg__tree__lazy__prop_8cpp__incl.map
create mode 100644 d2/d86/persistent__seg__tree__lazy__prop_8cpp__incl.md5
create mode 100644 d2/d86/persistent__seg__tree__lazy__prop_8cpp__incl.svg
create mode 100644 d5/d58/persistent__seg__tree__lazy__prop_8cpp.html
create mode 100644 d5/d58/persistent__seg__tree__lazy__prop_8cpp.js
create mode 100644 d5/d58/persistent__seg__tree__lazy__prop_8cpp_aa8dca7b867074164d5f45b0f3851269d_cgraph.map
create mode 100644 d5/d58/persistent__seg__tree__lazy__prop_8cpp_aa8dca7b867074164d5f45b0f3851269d_cgraph.md5
create mode 100644 d5/d58/persistent__seg__tree__lazy__prop_8cpp_aa8dca7b867074164d5f45b0f3851269d_cgraph.svg
create mode 100644 d5/d58/persistent__seg__tree__lazy__prop_8cpp_aa8dca7b867074164d5f45b0f3851269d_cgraph_org.svg
create mode 100644 d5/d58/persistent__seg__tree__lazy__prop_8cpp_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.map
create mode 100644 d5/d58/persistent__seg__tree__lazy__prop_8cpp_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.md5
create mode 100644 d5/d58/persistent__seg__tree__lazy__prop_8cpp_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.svg
create mode 100644 d5/d58/persistent__seg__tree__lazy__prop_8cpp_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph_org.svg
create mode 100644 d5/d66/classrange__queries_1_1per_seg_tree_1_1_node.html
create mode 100644 d5/d66/classrange__queries_1_1per_seg_tree_1_1_node.js
create mode 100644 d5/dca/classrange__queries_1_1per_seg_tree_1_1_node-members.html
create mode 100644 d6/d47/classrange__queries_1_1per_seg_tree__coll__graph.map
create mode 100644 d6/d47/classrange__queries_1_1per_seg_tree__coll__graph.md5
create mode 100644 d6/d47/classrange__queries_1_1per_seg_tree__coll__graph.svg
create mode 100644 d6/d47/classrange__queries_1_1per_seg_tree__coll__graph_org.svg
create mode 100644 d8/d28/classrange__queries_1_1per_seg_tree.html
create mode 100644 d8/d28/classrange__queries_1_1per_seg_tree.js
create mode 100644 d8/d28/classrange__queries_1_1per_seg_tree_a0fe4e431f3e09c274ecd7d2d58dcb865_cgraph.map
create mode 100644 d8/d28/classrange__queries_1_1per_seg_tree_a0fe4e431f3e09c274ecd7d2d58dcb865_cgraph.md5
create mode 100644 d8/d28/classrange__queries_1_1per_seg_tree_a0fe4e431f3e09c274ecd7d2d58dcb865_cgraph.svg
create mode 100644 d8/d28/classrange__queries_1_1per_seg_tree_ac83bcabf5a8db8b0d8d156a4c1bcd4c3_cgraph.map
create mode 100644 d8/d28/classrange__queries_1_1per_seg_tree_ac83bcabf5a8db8b0d8d156a4c1bcd4c3_cgraph.md5
create mode 100644 d8/d28/classrange__queries_1_1per_seg_tree_ac83bcabf5a8db8b0d8d156a4c1bcd4c3_cgraph.svg
create mode 100644 d8/d28/classrange__queries_1_1per_seg_tree_ace7f57935b3bb9446f11c239fd89ae79_cgraph.map
create mode 100644 d8/d28/classrange__queries_1_1per_seg_tree_ace7f57935b3bb9446f11c239fd89ae79_cgraph.md5
create mode 100644 d8/d28/classrange__queries_1_1per_seg_tree_ace7f57935b3bb9446f11c239fd89ae79_cgraph.svg
create mode 100644 d8/d28/classrange__queries_1_1per_seg_tree_ad484002bcb701820d55f32ea5d525571_cgraph.map
create mode 100644 d8/d28/classrange__queries_1_1per_seg_tree_ad484002bcb701820d55f32ea5d525571_cgraph.md5
create mode 100644 d8/d28/classrange__queries_1_1per_seg_tree_ad484002bcb701820d55f32ea5d525571_cgraph.svg
create mode 100644 d8/d28/classrange__queries_1_1per_seg_tree_ad484002bcb701820d55f32ea5d525571_cgraph_org.svg
create mode 100644 d8/d28/classrange__queries_1_1per_seg_tree_ae8ae4b1835e5e8aec32f68c5059ed4d4_cgraph.map
create mode 100644 d8/d28/classrange__queries_1_1per_seg_tree_ae8ae4b1835e5e8aec32f68c5059ed4d4_cgraph.md5
create mode 100644 d8/d28/classrange__queries_1_1per_seg_tree_ae8ae4b1835e5e8aec32f68c5059ed4d4_cgraph.svg
create mode 100644 d8/d28/classrange__queries_1_1per_seg_tree_af16c0c87b29119f066041d6e71ab50e0_cgraph.map
create mode 100644 d8/d28/classrange__queries_1_1per_seg_tree_af16c0c87b29119f066041d6e71ab50e0_cgraph.md5
create mode 100644 d8/d28/classrange__queries_1_1per_seg_tree_af16c0c87b29119f066041d6e71ab50e0_cgraph.svg
create mode 100644 d8/d28/classrange__queries_1_1per_seg_tree_af87494e6cf012d28c4f5b9d1c15f9c5d_cgraph.map
create mode 100644 d8/d28/classrange__queries_1_1per_seg_tree_af87494e6cf012d28c4f5b9d1c15f9c5d_cgraph.md5
create mode 100644 d8/d28/classrange__queries_1_1per_seg_tree_af87494e6cf012d28c4f5b9d1c15f9c5d_cgraph.svg
create mode 100644 d8/d28/classrange__queries_1_1per_seg_tree_af87494e6cf012d28c4f5b9d1c15f9c5d_cgraph_org.svg
create mode 100644 da/d66/classrange__queries_1_1per_seg_tree-members.html
create mode 100644 de/d61/classrange__queries_1_1per_seg_tree_1_1_node__coll__graph.map
create mode 100644 de/d61/classrange__queries_1_1per_seg_tree_1_1_node__coll__graph.md5
create mode 100644 de/d61/classrange__queries_1_1per_seg_tree_1_1_node__coll__graph.svg
create mode 100644 inherit_graph_60.map
create mode 100644 inherit_graph_60.md5
create mode 100644 inherit_graph_60.svg
create mode 100644 inherit_graph_61.map
create mode 100644 inherit_graph_61.md5
create mode 100644 inherit_graph_61.svg
diff --git a/annotated.html b/annotated.html
index d4ccf0aa8..6a1a0927b 100644
--- a/annotated.html
+++ b/annotated.html
@@ -146,6 +146,8 @@ $(document).ready(function(){initNavTree('annotated.html',''); initResizable();
diff --git a/d5/d58/persistent__seg__tree__lazy__prop_8cpp.html b/d5/d58/persistent__seg__tree__lazy__prop_8cpp.html
new file mode 100644
index 000000000..b1f26e33e
--- /dev/null
+++ b/d5/d58/persistent__seg__tree__lazy__prop_8cpp.html
@@ -0,0 +1,271 @@
+
+
+
+
+
+
+
+
Algorithms_in_C++: range_queries/persistent_seg_tree_lazy_prop.cpp File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Algorithms_in_C++
+ 1.0.0
+
+ Set of algorithms implemented in C++.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Persistent segment tree with range updates (lazy propagation)
+More...
+
#include <iostream>
+#include <memory>
+#include <vector>
+
+
+ range_queries
+ Algorithms and Data Structures that support range queries and updates.
+
+
+
+
Persistent segment tree with range updates (lazy propagation)
+
A normal segment tree facilitates making point updates and range queries in logarithmic time. Lazy propagation preserves the logarithmic time with range updates. So, a segment tree with lazy propagation enables doing range updates and range queries in logarithmic time, but it doesn't save any information about itself before the last update. A persistent data structure always preserves the previous version of itself when it is modified. That is, a new version of the segment tree is generated after every update. It saves all previous versions of itself (before every update) to facilitate doing range queries in any version. More memory is used ,but the logarithmic time is preserved because the new version points to the same nodes, that the previous version points to, that are not affected by the update. That is, only the nodes that are affected by the update and their ancestors are copied. The rest is copied using lazy propagation in the next queries. Thus preserving the logarithmic time because the number of nodes copied after any update is logarithmic.
+
Author Magdy Sedra
+
+
+
◆ main()
+
+
+
+
+
+ int main
+ (
+ void
+ )
+
+
+
+
+
+
Main function.
+
Returns 0 on exit
+
+
+
+
+
static void test()
Test implementations.
Definition: persistent_seg_tree_lazy_prop.cpp:268
+
+
+
+
+
+
+
◆ test()
+
+
+
+
+
+
+
+
+ static void test
+ (
+ )
+
+
+
+
+
+static
+
+
+
+
+
Test implementations.
+
Returns void
+
+
+
+
271 std::cout <<
"Elements before any updates are {" ;
+
272 for (uint32_t i = 0; i < arr.
size (); ++i) {
+
+
274 if (i != arr.size() - 1) {
+
+
+
+
+
+
+
281 std::cout <<
"Querying range sum on version 0 from index 2 to 4 = 3+11-2 = "
+
282 << tree.
query (2, 4, 0) <<
'\n' ;
+
+
284 <<
"Subtract 7 from all elements from index 1 to index 5 inclusive\n" ;
+
+
286 std::cout <<
"Elements of the segment tree whose version = 1 (after 1 "
+
+
288 for (uint32_t i = 0; i < arr.size(); ++i) {
+
+
290 if (i != arr.size() - 1) {
+
+
+
+
+
295 std::cout <<
"Add 10 to all elements from index 0 to index 7 inclusive\n" ;
+
+
297 std::cout <<
"Elements of the segment tree whose version = 2 (after 2 "
+
+
299 for (uint32_t i = 0; i < arr.size(); ++i) {
+
+
301 if (i != arr.size() - 1) {
+
+
+
+
+
306 std::cout <<
"Number of segment trees (versions) now = " << tree.
size ()
+
+
308 std::cout <<
"Querying range sum on version 0 from index 3 to 5 = 11-2+7 = "
+
309 << tree.
query (3, 5, 0) <<
'\n' ;
+
310 std::cout <<
"Querying range sum on version 1 from index 3 to 5 = 4-9+0 = "
+
311 << tree.
query (3, 5, 1) <<
'\n' ;
+
+
+
Range query here is range sum, but the code can be modified to make different queries like range max ...
Definition: persistent_seg_tree_lazy_prop.cpp:39
+
uint32_t size()
Getting the number of versions after updates so far which is equal to the size of the pointers vector...
Definition: persistent_seg_tree_lazy_prop.cpp:255
+
std::shared_ptr< Node > construct(const uint32_t &i, const uint32_t &j)
Constructing the segment tree with the early passed vector. Every call creates a node to hold the sum...
Definition: persistent_seg_tree_lazy_prop.cpp:106
+
int64_t query(const uint32_t &i, const uint32_t &j, const uint32_t &l, const uint32_t &r, std::shared_ptr< Node > const &curr)
Querying the range from index l to index r, checking at every node if it has some value to be propaga...
Definition: persistent_seg_tree_lazy_prop.cpp:171
+
std::shared_ptr< Node > update(const uint32_t &i, const uint32_t &j, const uint32_t &l, const uint32_t &r, const int64_t &value, std::shared_ptr< Node > const &curr)
Doing range update, checking at every node if it has some value to be propagated. All nodes affected ...
Definition: persistent_seg_tree_lazy_prop.cpp:135
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/d5/d58/persistent__seg__tree__lazy__prop_8cpp.js b/d5/d58/persistent__seg__tree__lazy__prop_8cpp.js
new file mode 100644
index 000000000..e09619b80
--- /dev/null
+++ b/d5/d58/persistent__seg__tree__lazy__prop_8cpp.js
@@ -0,0 +1,7 @@
+var persistent__seg__tree__lazy__prop_8cpp =
+[
+ [ "perSegTree", "d8/d28/classrange__queries_1_1per_seg_tree.html", "d8/d28/classrange__queries_1_1per_seg_tree" ],
+ [ "Node", "d5/d66/classrange__queries_1_1per_seg_tree_1_1_node.html", "d5/d66/classrange__queries_1_1per_seg_tree_1_1_node" ],
+ [ "main", "d5/d58/persistent__seg__tree__lazy__prop_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4", null ],
+ [ "test", "d5/d58/persistent__seg__tree__lazy__prop_8cpp.html#aa8dca7b867074164d5f45b0f3851269d", null ]
+];
\ No newline at end of file
diff --git a/d5/d58/persistent__seg__tree__lazy__prop_8cpp_aa8dca7b867074164d5f45b0f3851269d_cgraph.map b/d5/d58/persistent__seg__tree__lazy__prop_8cpp_aa8dca7b867074164d5f45b0f3851269d_cgraph.map
new file mode 100644
index 000000000..44fd3a69e
--- /dev/null
+++ b/d5/d58/persistent__seg__tree__lazy__prop_8cpp_aa8dca7b867074164d5f45b0f3851269d_cgraph.map
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/d5/d58/persistent__seg__tree__lazy__prop_8cpp_aa8dca7b867074164d5f45b0f3851269d_cgraph.md5 b/d5/d58/persistent__seg__tree__lazy__prop_8cpp_aa8dca7b867074164d5f45b0f3851269d_cgraph.md5
new file mode 100644
index 000000000..5e3780ff8
--- /dev/null
+++ b/d5/d58/persistent__seg__tree__lazy__prop_8cpp_aa8dca7b867074164d5f45b0f3851269d_cgraph.md5
@@ -0,0 +1 @@
+ec856ef8be7199a44c3ec6193965f4dc
\ No newline at end of file
diff --git a/d5/d58/persistent__seg__tree__lazy__prop_8cpp_aa8dca7b867074164d5f45b0f3851269d_cgraph.svg b/d5/d58/persistent__seg__tree__lazy__prop_8cpp_aa8dca7b867074164d5f45b0f3851269d_cgraph.svg
new file mode 100644
index 000000000..4ab18c9d4
--- /dev/null
+++ b/d5/d58/persistent__seg__tree__lazy__prop_8cpp_aa8dca7b867074164d5f45b0f3851269d_cgraph.svg
@@ -0,0 +1,239 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+test
+
+
+
+Node1
+
+
+test
+
+
+
+
+
+Node2
+
+
+range_queries::perSegTree
+::construct
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+range_queries::perSegTree
+::query
+
+
+
+
+
+Node1->Node3
+
+
+
+
+
+Node6
+
+
+range_queries::perSegTree
+::size
+
+
+
+
+
+Node1->Node6
+
+
+
+
+
+Node7
+
+
+std::vector::size
+
+
+
+
+
+Node1->Node7
+
+
+
+
+
+Node8
+
+
+range_queries::perSegTree
+::update
+
+
+
+
+
+Node1->Node8
+
+
+
+
+
+Node4
+
+
+range_queries::perSegTree
+::lazy
+
+
+
+
+
+Node3->Node4
+
+
+
+
+
+Node5
+
+
+range_queries::perSegTree
+::newKid
+
+
+
+
+
+Node4->Node5
+
+
+
+
+
+Node6->Node7
+
+
+
+
+
+Node8->Node4
+
+
+
+
+
+Node8->Node5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/d5/d58/persistent__seg__tree__lazy__prop_8cpp_aa8dca7b867074164d5f45b0f3851269d_cgraph_org.svg b/d5/d58/persistent__seg__tree__lazy__prop_8cpp_aa8dca7b867074164d5f45b0f3851269d_cgraph_org.svg
new file mode 100644
index 000000000..1d42eebdf
--- /dev/null
+++ b/d5/d58/persistent__seg__tree__lazy__prop_8cpp_aa8dca7b867074164d5f45b0f3851269d_cgraph_org.svg
@@ -0,0 +1,151 @@
+
+
+
+
+
+
+test
+
+
+
+Node1
+
+
+test
+
+
+
+
+
+Node2
+
+
+range_queries::perSegTree
+::construct
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+range_queries::perSegTree
+::query
+
+
+
+
+
+Node1->Node3
+
+
+
+
+
+Node6
+
+
+range_queries::perSegTree
+::size
+
+
+
+
+
+Node1->Node6
+
+
+
+
+
+Node7
+
+
+std::vector::size
+
+
+
+
+
+Node1->Node7
+
+
+
+
+
+Node8
+
+
+range_queries::perSegTree
+::update
+
+
+
+
+
+Node1->Node8
+
+
+
+
+
+Node4
+
+
+range_queries::perSegTree
+::lazy
+
+
+
+
+
+Node3->Node4
+
+
+
+
+
+Node5
+
+
+range_queries::perSegTree
+::newKid
+
+
+
+
+
+Node4->Node5
+
+
+
+
+
+Node6->Node7
+
+
+
+
+
+Node8->Node4
+
+
+
+
+
+Node8->Node5
+
+
+
+
+
diff --git a/d5/d58/persistent__seg__tree__lazy__prop_8cpp_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.map b/d5/d58/persistent__seg__tree__lazy__prop_8cpp_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.map
new file mode 100644
index 000000000..699c45b10
--- /dev/null
+++ b/d5/d58/persistent__seg__tree__lazy__prop_8cpp_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.map
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/d5/d58/persistent__seg__tree__lazy__prop_8cpp_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.md5 b/d5/d58/persistent__seg__tree__lazy__prop_8cpp_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.md5
new file mode 100644
index 000000000..576335877
--- /dev/null
+++ b/d5/d58/persistent__seg__tree__lazy__prop_8cpp_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.md5
@@ -0,0 +1 @@
+6300b967ba7d550335a604dc2b2d8664
\ No newline at end of file
diff --git a/d5/d58/persistent__seg__tree__lazy__prop_8cpp_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.svg b/d5/d58/persistent__seg__tree__lazy__prop_8cpp_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.svg
new file mode 100644
index 000000000..d44160ac4
--- /dev/null
+++ b/d5/d58/persistent__seg__tree__lazy__prop_8cpp_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.svg
@@ -0,0 +1,254 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+main
+
+
+
+Node1
+
+
+main
+
+
+
+
+
+Node2
+
+
+test
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+range_queries::perSegTree
+::construct
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node4
+
+
+range_queries::perSegTree
+::query
+
+
+
+
+
+Node2->Node4
+
+
+
+
+
+Node7
+
+
+range_queries::perSegTree
+::size
+
+
+
+
+
+Node2->Node7
+
+
+
+
+
+Node8
+
+
+std::vector::size
+
+
+
+
+
+Node2->Node8
+
+
+
+
+
+Node9
+
+
+range_queries::perSegTree
+::update
+
+
+
+
+
+Node2->Node9
+
+
+
+
+
+Node5
+
+
+range_queries::perSegTree
+::lazy
+
+
+
+
+
+Node4->Node5
+
+
+
+
+
+Node6
+
+
+range_queries::perSegTree
+::newKid
+
+
+
+
+
+Node5->Node6
+
+
+
+
+
+Node7->Node8
+
+
+
+
+
+Node9->Node5
+
+
+
+
+
+Node9->Node6
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/d5/d58/persistent__seg__tree__lazy__prop_8cpp_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph_org.svg b/d5/d58/persistent__seg__tree__lazy__prop_8cpp_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph_org.svg
new file mode 100644
index 000000000..d6f42f0d0
--- /dev/null
+++ b/d5/d58/persistent__seg__tree__lazy__prop_8cpp_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph_org.svg
@@ -0,0 +1,166 @@
+
+
+
+
+
+
+main
+
+
+
+Node1
+
+
+main
+
+
+
+
+
+Node2
+
+
+test
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+range_queries::perSegTree
+::construct
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node4
+
+
+range_queries::perSegTree
+::query
+
+
+
+
+
+Node2->Node4
+
+
+
+
+
+Node7
+
+
+range_queries::perSegTree
+::size
+
+
+
+
+
+Node2->Node7
+
+
+
+
+
+Node8
+
+
+std::vector::size
+
+
+
+
+
+Node2->Node8
+
+
+
+
+
+Node9
+
+
+range_queries::perSegTree
+::update
+
+
+
+
+
+Node2->Node9
+
+
+
+
+
+Node5
+
+
+range_queries::perSegTree
+::lazy
+
+
+
+
+
+Node4->Node5
+
+
+
+
+
+Node6
+
+
+range_queries::perSegTree
+::newKid
+
+
+
+
+
+Node5->Node6
+
+
+
+
+
+Node7->Node8
+
+
+
+
+
+Node9->Node5
+
+
+
+
+
+Node9->Node6
+
+
+
+
+
diff --git a/d5/d66/classrange__queries_1_1per_seg_tree_1_1_node.html b/d5/d66/classrange__queries_1_1per_seg_tree_1_1_node.html
new file mode 100644
index 000000000..1e76f6815
--- /dev/null
+++ b/d5/d66/classrange__queries_1_1per_seg_tree_1_1_node.html
@@ -0,0 +1,137 @@
+
+
+
+
+
+
+
+
Algorithms_in_C++: range_queries::perSegTree::Node Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Algorithms_in_C++
+ 1.0.0
+
+ Set of algorithms implemented in C++.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
The documentation for this class was generated from the following file:
+
+
+
+
+
+
diff --git a/d5/d66/classrange__queries_1_1per_seg_tree_1_1_node.js b/d5/d66/classrange__queries_1_1per_seg_tree_1_1_node.js
new file mode 100644
index 000000000..f9e571b52
--- /dev/null
+++ b/d5/d66/classrange__queries_1_1per_seg_tree_1_1_node.js
@@ -0,0 +1,7 @@
+var classrange__queries_1_1per_seg_tree_1_1_node =
+[
+ [ "left", "d5/d66/classrange__queries_1_1per_seg_tree_1_1_node.html#ab3e7bf5a91911c17907b30b250108013", null ],
+ [ "prop", "d5/d66/classrange__queries_1_1per_seg_tree_1_1_node.html#adeb7de2a7341362c3c6edf4d48476656", null ],
+ [ "right", "d5/d66/classrange__queries_1_1per_seg_tree_1_1_node.html#a9adb4639a0797e94a3e556b6b902c088", null ],
+ [ "val", "d5/d66/classrange__queries_1_1per_seg_tree_1_1_node.html#acc044f787c90b815773726d7fdfdaccf", null ]
+];
\ No newline at end of file
diff --git a/d5/d88/md__d_i_r_e_c_t_o_r_y.html b/d5/d88/md__d_i_r_e_c_t_o_r_y.html
index 81f9e90a8..862c9d227 100644
--- a/d5/d88/md__d_i_r_e_c_t_o_r_y.html
+++ b/d5/d88/md__d_i_r_e_c_t_o_r_y.html
@@ -365,6 +365,7 @@ Range Queries
Fenwick Tree
Heavy Light Decomposition
Mo
+
Persistent Seg Tree Lazy Prop
Segtree
Sparse Table
diff --git a/d5/dca/classrange__queries_1_1per_seg_tree_1_1_node-members.html b/d5/dca/classrange__queries_1_1per_seg_tree_1_1_node-members.html
new file mode 100644
index 000000000..2f35ac6c5
--- /dev/null
+++ b/d5/dca/classrange__queries_1_1per_seg_tree_1_1_node-members.html
@@ -0,0 +1,113 @@
+
+
+
+
+
+
+
+
Algorithms_in_C++: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Algorithms_in_C++
+ 1.0.0
+
+ Set of algorithms implemented in C++.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for range_queries::perSegTree::Node , including all inherited members.
+
+
+
+
+
+
diff --git a/d6/d47/classrange__queries_1_1per_seg_tree__coll__graph.map b/d6/d47/classrange__queries_1_1per_seg_tree__coll__graph.map
new file mode 100644
index 000000000..1d6c1bfc9
--- /dev/null
+++ b/d6/d47/classrange__queries_1_1per_seg_tree__coll__graph.map
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/d6/d47/classrange__queries_1_1per_seg_tree__coll__graph.md5 b/d6/d47/classrange__queries_1_1per_seg_tree__coll__graph.md5
new file mode 100644
index 000000000..89b36f3e2
--- /dev/null
+++ b/d6/d47/classrange__queries_1_1per_seg_tree__coll__graph.md5
@@ -0,0 +1 @@
+795dd1dc2068bb7278c65eea4a5d5a52
\ No newline at end of file
diff --git a/d6/d47/classrange__queries_1_1per_seg_tree__coll__graph.svg b/d6/d47/classrange__queries_1_1per_seg_tree__coll__graph.svg
new file mode 100644
index 000000000..350db1af3
--- /dev/null
+++ b/d6/d47/classrange__queries_1_1per_seg_tree__coll__graph.svg
@@ -0,0 +1,178 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+range_queries::perSegTree
+
+
+
+Node1
+
+
+range_queries::perSegTree
+
+
+
+
+
+Node2
+
+
+std::vector< std::shared
+_ptr< range_queries::perSegTree
+::Node > >
+
+
+
+
+
+Node2->Node1
+
+
+ ptrs
+
+
+
+Node3
+
+
+std::shared_ptr< range
+_queries::perSegTree::
+Node >
+
+
+
+
+
+Node3->Node2
+
+
+ elements
+
+
+
+Node4
+
+
+std::vector< int64_t >
+
+
+
+
+
+Node4->Node1
+
+
+ vec
+
+
+
+Node5
+
+
+std::int64_t
+
+
+
+
+
+Node5->Node4
+
+
+ elements
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/d6/d47/classrange__queries_1_1per_seg_tree__coll__graph_org.svg b/d6/d47/classrange__queries_1_1per_seg_tree__coll__graph_org.svg
new file mode 100644
index 000000000..94950c11c
--- /dev/null
+++ b/d6/d47/classrange__queries_1_1per_seg_tree__coll__graph_org.svg
@@ -0,0 +1,90 @@
+
+
+
+
+
+
+range_queries::perSegTree
+
+
+
+Node1
+
+
+range_queries::perSegTree
+
+
+
+
+
+Node2
+
+
+std::vector< std::shared
+_ptr< range_queries::perSegTree
+::Node > >
+
+
+
+
+
+Node2->Node1
+
+
+ ptrs
+
+
+
+Node3
+
+
+std::shared_ptr< range
+_queries::perSegTree::
+Node >
+
+
+
+
+
+Node3->Node2
+
+
+ elements
+
+
+
+Node4
+
+
+std::vector< int64_t >
+
+
+
+
+
+Node4->Node1
+
+
+ vec
+
+
+
+Node5
+
+
+std::int64_t
+
+
+
+
+
+Node5->Node4
+
+
+ elements
+
+
+
diff --git a/d8/d28/classrange__queries_1_1per_seg_tree.html b/d8/d28/classrange__queries_1_1per_seg_tree.html
new file mode 100644
index 000000000..000d66a02
--- /dev/null
+++ b/d8/d28/classrange__queries_1_1per_seg_tree.html
@@ -0,0 +1,788 @@
+
+
+
+
+
+
+
+
Algorithms_in_C++: range_queries::perSegTree Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Algorithms_in_C++
+ 1.0.0
+
+ Set of algorithms implemented in C++.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Range query here is range sum, but the code can be modified to make different queries like range max or min.
+ More...
+
+
+
+
+void construct (const std::vector < int64_t > &vec )
+ Constructing the segment tree with the values in the passed vector. Returned root pointer is pushed in the pointers vector to have access to the original version if the segment tree is updated. More...
+
+void update (const uint32_t &l, const uint32_t &r, const int64_t &value)
+ Doing range update by passing the left and right indexes of the range as well as the value to be added. More...
+
+int64_t query (const uint32_t &l, const uint32_t &r, const uint32_t &version)
+ Querying the range from index l to index r, getting the sum of the elements whose index x satisfies l<=x<=r. More...
+
+uint32_t size ()
+ Getting the number of versions after updates so far which is equal to the size of the pointers vector. More...
+
+
+
+std::shared_ptr < Node > newKid (std::shared_ptr < Node > const &curr)
+ Creating a new node with the same values of curr node. More...
+
+void lazy (const uint32_t &i, const uint32_t &j, std::shared_ptr < Node > const &curr)
+ If there is some value to be propagated to the passed node, value is added to the node and the children of the node, if exist, are copied and the propagated value is also added to them. More...
+
+std::shared_ptr < Node > construct (const uint32_t &i, const uint32_t &j)
+ Constructing the segment tree with the early passed vector. Every call creates a node to hold the sum of the given range, set its pointers to the children, and set its value to the sum of the children's values. More...
+
+std::shared_ptr < Node > update (const uint32_t &i, const uint32_t &j, const uint32_t &l, const uint32_t &r, const int64_t &value, std::shared_ptr < Node > const &curr)
+ Doing range update, checking at every node if it has some value to be propagated. All nodes affected by the update are copied and propagation value is added to the leaf of them. More...
+
+int64_t query (const uint32_t &i, const uint32_t &j, const uint32_t &l, const uint32_t &r, std::shared_ptr < Node > const &curr)
+ Querying the range from index l to index r, checking at every node if it has some value to be propagated. Current node's value is returned if its range is completely inside the wanted range, else 0 is returned. More...
+
+
+
+
Range query here is range sum, but the code can be modified to make different queries like range max or min.
+
+
+
◆ construct() [1/2]
+
+
+
+
+
+
+
+
+ void range_queries::perSegTree::construct
+ (
+ const std::vector < int64_t > &
+ vec )
+
+
+
+
+
+inline
+
+
+
+
+
Constructing the segment tree with the values in the passed vector. Returned root pointer is pushed in the pointers vector to have access to the original version if the segment tree is updated.
+
public methods that can be used directly from outside the class. They call the private functions that do all the work
Parameters
+
+ vec vector whose values will be used to build the segment tree
+
+
+
+
Returns void
+
+
+
+
+
+
+
+
+
+
std::vector< std::shared_ptr< Node > > ptrs
number of elements/leaf nodes in the segment tree
Definition: persistent_seg_tree_lazy_prop.cpp:54
+
std::shared_ptr< Node > construct(const uint32_t &i, const uint32_t &j)
Constructing the segment tree with the early passed vector. Every call creates a node to hold the sum...
Definition: persistent_seg_tree_lazy_prop.cpp:106
+
std::vector< int64_t > vec
Definition: persistent_seg_tree_lazy_prop.cpp:57
+
+
+
+
+
+
+
+
+
+
◆ construct() [2/2]
+
+
+
+
+
+
+
+
+ std::shared_ptr <Node > range_queries::perSegTree::construct
+ (
+ const uint32_t &
+ i ,
+
+
+
+
+ const uint32_t &
+ j
+
+
+
+ )
+
+
+
+
+
+inline private
+
+
+
+
+
Constructing the segment tree with the early passed vector. Every call creates a node to hold the sum of the given range, set its pointers to the children, and set its value to the sum of the children's values.
+
Parameters
+
+ i the left index of the range that the created node holds its sum
+ j the right index of the range that the created node holds its sum
+
+
+
+
Returns pointer to the newly created node
+
+
107 auto newNode = std::make_shared<Node>(
Node ());
+
+
109 newNode->val =
vec [i];
+
+
111 uint32_t mid = i + (j - i) / 2;
+
+
+
114 newNode->val = leftt->val +
right ->val;
+
115 newNode->left = leftt;
+
116 newNode->right =
right ;
+
+
+
+
+
Definition: linkedlist_implentation_usingarray.cpp:14
+
+
+
+
+
◆ lazy()
+
+
+
+
+
+
+
+
+ void range_queries::perSegTree::lazy
+ (
+ const uint32_t &
+ i ,
+
+
+
+
+ const uint32_t &
+ j ,
+
+
+
+
+ std::shared_ptr < Node > const &
+ curr
+
+
+
+ )
+
+
+
+
+
+inline private
+
+
+
+
+
If there is some value to be propagated to the passed node, value is added to the node and the children of the node, if exist, are copied and the propagated value is also added to them.
+
Parameters
+
+ i the left index of the range that the passed node holds its sum
+ j the right index of the range that the passed node holds its sum
+ curr pointer to the node to be propagated
+
+
+
+
Returns void
+
+
+
+
+
88 curr->val += (j - i + 1) * curr->prop;
+
+
90 curr->left =
newKid (curr->left);
+
91 curr->right =
newKid (curr->right);
+
92 curr->left->prop += curr->prop;
+
93 curr->right->prop += curr->prop;
+
+
+
+
std::shared_ptr< Node > newKid(std::shared_ptr< Node > const &curr)
Creating a new node with the same values of curr node.
Definition: persistent_seg_tree_lazy_prop.cpp:65
+
+
+
+
+
+
+
◆ newKid()
+
+
+
+
+
+
+
+
+
+inline private
+
+
+
+
+
Creating a new node with the same values of curr node.
+
values of the leaf nodes that the segment tree will be constructed with
Parameters
+
+ curr node that would be copied
+
+
+
+
Returns the new node
+
+
66 auto newNode = std::make_shared<Node>(
Node ());
+
67 newNode->left = curr->left;
+
68 newNode->right = curr->right;
+
69 newNode->prop = curr->prop;
+
70 newNode->val = curr->val;
+
+
+
+
+
+
+
◆ query() [1/2]
+
+
+
+
+
+
+
+
+ int64_t range_queries::perSegTree::query
+ (
+ const uint32_t &
+ i ,
+
+
+
+
+ const uint32_t &
+ j ,
+
+
+
+
+ const uint32_t &
+ l ,
+
+
+
+
+ const uint32_t &
+ r ,
+
+
+
+
+ std::shared_ptr < Node > const &
+ curr
+
+
+
+ )
+
+
+
+
+
+inline private
+
+
+
+
+
Querying the range from index l to index r, checking at every node if it has some value to be propagated. Current node's value is returned if its range is completely inside the wanted range, else 0 is returned.
+
Parameters
+
+ i the left index of the range that the passed node holds its sum
+ j the right index of the range that the passed node holds its sum
+ l the left index of the range whose sum should be returned as a result
+ r the right index of the range whose sum should be returned as a result
+ curr pointer to the current node, which has value = the sum of elements whose index x satisfies i<=x<=j
+
+
+
+
Returns sum of elements whose index x satisfies l<=x<=r
+
+
+
174 if (j < l || r < i) {
+
+
+
177 if (i >= l && j <= r) {
+
+
+
180 uint32_t mid = i + (j - i) / 2;
+
181 return query (i, mid, l, r, curr->left) +
+
182 query (mid + 1, j, l, r, curr->right);
+
+
void lazy(const uint32_t &i, const uint32_t &j, std::shared_ptr< Node > const &curr)
If there is some value to be propagated to the passed node, value is added to the node and the childr...
Definition: persistent_seg_tree_lazy_prop.cpp:83
+
int64_t query(const uint32_t &i, const uint32_t &j, const uint32_t &l, const uint32_t &r, std::shared_ptr< Node > const &curr)
Querying the range from index l to index r, checking at every node if it has some value to be propaga...
Definition: persistent_seg_tree_lazy_prop.cpp:171
+
+
+
+
+
+
+
◆ query() [2/2]
+
+
+
+
+
+
+
+
+ int64_t range_queries::perSegTree::query
+ (
+ const uint32_t &
+ l ,
+
+
+
+
+ const uint32_t &
+ r ,
+
+
+
+
+ const uint32_t &
+ version
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
Querying the range from index l to index r, getting the sum of the elements whose index x satisfies l<=x<=r.
+
Parameters
+
+ l the left index of the range whose sum should be returned as a result
+ r the right index of the range whose sum should be returned as a result
+ version the version to query on. If equals to 0, the original segment tree will be queried
+
+
+
+
Returns sum of elements whose index x satisfies l<=x<=r
+
+
247 return query (0, n - 1, l, r,
ptrs [version]);
+
+
+
+
+
+
+
+
◆ size()
+
+
+
+
+
+
+
+
+ uint32_t range_queries::perSegTree::size
+ (
+ )
+
+
+
+
+
+inline
+
+
+
+
+
Getting the number of versions after updates so far which is equal to the size of the pointers vector.
+
Returns the number of versions
+
+
+
+
+
+
+
◆ update() [1/2]
+
+
+
+
+
+
+
+
+ std::shared_ptr <Node > range_queries::perSegTree::update
+ (
+ const uint32_t &
+ i ,
+
+
+
+
+ const uint32_t &
+ j ,
+
+
+
+
+ const uint32_t &
+ l ,
+
+
+
+
+ const uint32_t &
+ r ,
+
+
+
+
+ const int64_t &
+ value ,
+
+
+
+
+ std::shared_ptr < Node > const &
+ curr
+
+
+
+ )
+
+
+
+
+
+inline private
+
+
+
+
+
Doing range update, checking at every node if it has some value to be propagated. All nodes affected by the update are copied and propagation value is added to the leaf of them.
+
Parameters
+
+ i the left index of the range that the passed node holds its sum
+ j the right index of the range that the passed node holds its sum
+ l the left index of the range to be updated
+ r the right index of the range to be updated
+ value the value to be added to every element whose index x satisfies l<=x<=r
+ curr pointer to the current node, which has value = the sum of elements whose index x satisfies i<=x<=j
+
+
+
+
Returns pointer to the current newly created node
+
+
+
140 if (i >= l && j <= r) {
+
+
142 newNode->prop += value;
+
+
+
+
146 if (i > r || j < l) {
+
+
+
149 auto newNode = std::make_shared<Node>(
Node ());
+
150 uint32_t mid = i + (j - i) / 2;
+
151 newNode->left =
update (i, mid, l, r, value, curr->left);
+
152 newNode->right =
update (mid + 1, j, l, r, value, curr->right);
+
153 newNode->val = newNode->left->val + newNode->right->val;
+
+
+
std::shared_ptr< Node > update(const uint32_t &i, const uint32_t &j, const uint32_t &l, const uint32_t &r, const int64_t &value, std::shared_ptr< Node > const &curr)
Doing range update, checking at every node if it has some value to be propagated. All nodes affected ...
Definition: persistent_seg_tree_lazy_prop.cpp:135
+
+
+
+
+
+
+
+
◆ update() [2/2]
+
+
+
+
+
+
+
+
+ void range_queries::perSegTree::update
+ (
+ const uint32_t &
+ l ,
+
+
+
+
+ const uint32_t &
+ r ,
+
+
+
+
+ const int64_t &
+ value
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
Doing range update by passing the left and right indexes of the range as well as the value to be added.
+
Parameters
+
+ l the left index of the range to be updated
+ r the right index of the range to be updated
+ value the value to be added to every element whose index x satisfies l<=x<=r
+
+
+
+
Returns void
+
+
+
225 0, n - 1, l, r, value,
+
+
+
+
+
+
+
+
+
+
+
◆ vec
+
+
+
+
+
+
+
+
+ std::vector <int64_t> range_queries::perSegTree::vec {}
+
+
+
+
+private
+
+
+
+
ptrs[i] holds a root pointer to the segment tree after the ith update. ptrs[0] holds a root pointer to the segment tree before any updates
+
+
+
+
The documentation for this class was generated from the following file:
+
+
+
+
+
+
diff --git a/d8/d28/classrange__queries_1_1per_seg_tree.js b/d8/d28/classrange__queries_1_1per_seg_tree.js
new file mode 100644
index 000000000..2690c5d6c
--- /dev/null
+++ b/d8/d28/classrange__queries_1_1per_seg_tree.js
@@ -0,0 +1,16 @@
+var classrange__queries_1_1per_seg_tree =
+[
+ [ "Node", "d5/d66/classrange__queries_1_1per_seg_tree_1_1_node.html", "d5/d66/classrange__queries_1_1per_seg_tree_1_1_node" ],
+ [ "construct", "d8/d28/classrange__queries_1_1per_seg_tree.html#ac83bcabf5a8db8b0d8d156a4c1bcd4c3", null ],
+ [ "construct", "d8/d28/classrange__queries_1_1per_seg_tree.html#a67d8371bc998c67d53e8f64db4f52767", null ],
+ [ "lazy", "d8/d28/classrange__queries_1_1per_seg_tree.html#ace7f57935b3bb9446f11c239fd89ae79", null ],
+ [ "newKid", "d8/d28/classrange__queries_1_1per_seg_tree.html#acacb937f95a078a236a4a58f9630a045", null ],
+ [ "query", "d8/d28/classrange__queries_1_1per_seg_tree.html#ae8ae4b1835e5e8aec32f68c5059ed4d4", null ],
+ [ "query", "d8/d28/classrange__queries_1_1per_seg_tree.html#ad484002bcb701820d55f32ea5d525571", null ],
+ [ "size", "d8/d28/classrange__queries_1_1per_seg_tree.html#a0fe4e431f3e09c274ecd7d2d58dcb865", null ],
+ [ "update", "d8/d28/classrange__queries_1_1per_seg_tree.html#af16c0c87b29119f066041d6e71ab50e0", null ],
+ [ "update", "d8/d28/classrange__queries_1_1per_seg_tree.html#af87494e6cf012d28c4f5b9d1c15f9c5d", null ],
+ [ "n", "d8/d28/classrange__queries_1_1per_seg_tree.html#a6f5b36111f90807a9fdf6bbca04f535e", null ],
+ [ "ptrs", "d8/d28/classrange__queries_1_1per_seg_tree.html#a1eac9cf0613dfc8e2b0195009dd5c9d5", null ],
+ [ "vec", "d8/d28/classrange__queries_1_1per_seg_tree.html#a8ff495d2f389b4aaa54449c26c6078f3", null ]
+];
\ No newline at end of file
diff --git a/d8/d28/classrange__queries_1_1per_seg_tree_a0fe4e431f3e09c274ecd7d2d58dcb865_cgraph.map b/d8/d28/classrange__queries_1_1per_seg_tree_a0fe4e431f3e09c274ecd7d2d58dcb865_cgraph.map
new file mode 100644
index 000000000..ea96d9788
--- /dev/null
+++ b/d8/d28/classrange__queries_1_1per_seg_tree_a0fe4e431f3e09c274ecd7d2d58dcb865_cgraph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/d8/d28/classrange__queries_1_1per_seg_tree_a0fe4e431f3e09c274ecd7d2d58dcb865_cgraph.md5 b/d8/d28/classrange__queries_1_1per_seg_tree_a0fe4e431f3e09c274ecd7d2d58dcb865_cgraph.md5
new file mode 100644
index 000000000..964575258
--- /dev/null
+++ b/d8/d28/classrange__queries_1_1per_seg_tree_a0fe4e431f3e09c274ecd7d2d58dcb865_cgraph.md5
@@ -0,0 +1 @@
+64b7d840ebf115cd1c86482ef9919fbb
\ No newline at end of file
diff --git a/d8/d28/classrange__queries_1_1per_seg_tree_a0fe4e431f3e09c274ecd7d2d58dcb865_cgraph.svg b/d8/d28/classrange__queries_1_1per_seg_tree_a0fe4e431f3e09c274ecd7d2d58dcb865_cgraph.svg
new file mode 100644
index 000000000..e4986b665
--- /dev/null
+++ b/d8/d28/classrange__queries_1_1per_seg_tree_a0fe4e431f3e09c274ecd7d2d58dcb865_cgraph.svg
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+range_queries::perSegTree::size
+
+
+
+Node1
+
+
+range_queries::perSegTree
+::size
+
+
+
+
+
+Node2
+
+
+std::vector::size
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
diff --git a/d8/d28/classrange__queries_1_1per_seg_tree_ac83bcabf5a8db8b0d8d156a4c1bcd4c3_cgraph.map b/d8/d28/classrange__queries_1_1per_seg_tree_ac83bcabf5a8db8b0d8d156a4c1bcd4c3_cgraph.map
new file mode 100644
index 000000000..c2a864825
--- /dev/null
+++ b/d8/d28/classrange__queries_1_1per_seg_tree_ac83bcabf5a8db8b0d8d156a4c1bcd4c3_cgraph.map
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/d8/d28/classrange__queries_1_1per_seg_tree_ac83bcabf5a8db8b0d8d156a4c1bcd4c3_cgraph.md5 b/d8/d28/classrange__queries_1_1per_seg_tree_ac83bcabf5a8db8b0d8d156a4c1bcd4c3_cgraph.md5
new file mode 100644
index 000000000..c024df89d
--- /dev/null
+++ b/d8/d28/classrange__queries_1_1per_seg_tree_ac83bcabf5a8db8b0d8d156a4c1bcd4c3_cgraph.md5
@@ -0,0 +1 @@
+f6af35e5643dc80c6e849b32fc8bca95
\ No newline at end of file
diff --git a/d8/d28/classrange__queries_1_1per_seg_tree_ac83bcabf5a8db8b0d8d156a4c1bcd4c3_cgraph.svg b/d8/d28/classrange__queries_1_1per_seg_tree_ac83bcabf5a8db8b0d8d156a4c1bcd4c3_cgraph.svg
new file mode 100644
index 000000000..0e6b97dbd
--- /dev/null
+++ b/d8/d28/classrange__queries_1_1per_seg_tree_ac83bcabf5a8db8b0d8d156a4c1bcd4c3_cgraph.svg
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+range_queries::perSegTree::construct
+
+
+
+Node1
+
+
+range_queries::perSegTree
+::construct
+
+
+
+
+
+Node2
+
+
+std::vector::empty
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+std::vector::size
+
+
+
+
+
+Node1->Node3
+
+
+
+
+
diff --git a/d8/d28/classrange__queries_1_1per_seg_tree_ace7f57935b3bb9446f11c239fd89ae79_cgraph.map b/d8/d28/classrange__queries_1_1per_seg_tree_ace7f57935b3bb9446f11c239fd89ae79_cgraph.map
new file mode 100644
index 000000000..164d38b62
--- /dev/null
+++ b/d8/d28/classrange__queries_1_1per_seg_tree_ace7f57935b3bb9446f11c239fd89ae79_cgraph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/d8/d28/classrange__queries_1_1per_seg_tree_ace7f57935b3bb9446f11c239fd89ae79_cgraph.md5 b/d8/d28/classrange__queries_1_1per_seg_tree_ace7f57935b3bb9446f11c239fd89ae79_cgraph.md5
new file mode 100644
index 000000000..15595b750
--- /dev/null
+++ b/d8/d28/classrange__queries_1_1per_seg_tree_ace7f57935b3bb9446f11c239fd89ae79_cgraph.md5
@@ -0,0 +1 @@
+9221a56cc63db5e990cdb9212a1b91cf
\ No newline at end of file
diff --git a/d8/d28/classrange__queries_1_1per_seg_tree_ace7f57935b3bb9446f11c239fd89ae79_cgraph.svg b/d8/d28/classrange__queries_1_1per_seg_tree_ace7f57935b3bb9446f11c239fd89ae79_cgraph.svg
new file mode 100644
index 000000000..7700688b1
--- /dev/null
+++ b/d8/d28/classrange__queries_1_1per_seg_tree_ace7f57935b3bb9446f11c239fd89ae79_cgraph.svg
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+range_queries::perSegTree::lazy
+
+
+
+Node1
+
+
+range_queries::perSegTree
+::lazy
+
+
+
+
+
+Node2
+
+
+range_queries::perSegTree
+::newKid
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
diff --git a/d8/d28/classrange__queries_1_1per_seg_tree_ad484002bcb701820d55f32ea5d525571_cgraph.map b/d8/d28/classrange__queries_1_1per_seg_tree_ad484002bcb701820d55f32ea5d525571_cgraph.map
new file mode 100644
index 000000000..bfb1d7745
--- /dev/null
+++ b/d8/d28/classrange__queries_1_1per_seg_tree_ad484002bcb701820d55f32ea5d525571_cgraph.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/d8/d28/classrange__queries_1_1per_seg_tree_ad484002bcb701820d55f32ea5d525571_cgraph.md5 b/d8/d28/classrange__queries_1_1per_seg_tree_ad484002bcb701820d55f32ea5d525571_cgraph.md5
new file mode 100644
index 000000000..8ca3b3b72
--- /dev/null
+++ b/d8/d28/classrange__queries_1_1per_seg_tree_ad484002bcb701820d55f32ea5d525571_cgraph.md5
@@ -0,0 +1 @@
+41f88526f3297a3706e8df6ae36fdbca
\ No newline at end of file
diff --git a/d8/d28/classrange__queries_1_1per_seg_tree_ad484002bcb701820d55f32ea5d525571_cgraph.svg b/d8/d28/classrange__queries_1_1per_seg_tree_ad484002bcb701820d55f32ea5d525571_cgraph.svg
new file mode 100644
index 000000000..75f94e564
--- /dev/null
+++ b/d8/d28/classrange__queries_1_1per_seg_tree_ad484002bcb701820d55f32ea5d525571_cgraph.svg
@@ -0,0 +1,159 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+range_queries::perSegTree::query
+
+
+
+Node1
+
+
+range_queries::perSegTree
+::query
+
+
+
+
+
+Node2
+
+
+range_queries::perSegTree
+::query
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+range_queries::perSegTree
+::lazy
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node4
+
+
+range_queries::perSegTree
+::newKid
+
+
+
+
+
+Node3->Node4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/d8/d28/classrange__queries_1_1per_seg_tree_ad484002bcb701820d55f32ea5d525571_cgraph_org.svg b/d8/d28/classrange__queries_1_1per_seg_tree_ad484002bcb701820d55f32ea5d525571_cgraph_org.svg
new file mode 100644
index 000000000..0b020b2c8
--- /dev/null
+++ b/d8/d28/classrange__queries_1_1per_seg_tree_ad484002bcb701820d55f32ea5d525571_cgraph_org.svg
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+range_queries::perSegTree::query
+
+
+
+Node1
+
+
+range_queries::perSegTree
+::query
+
+
+
+
+
+Node2
+
+
+range_queries::perSegTree
+::query
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+range_queries::perSegTree
+::lazy
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node4
+
+
+range_queries::perSegTree
+::newKid
+
+
+
+
+
+Node3->Node4
+
+
+
+
+
diff --git a/d8/d28/classrange__queries_1_1per_seg_tree_ae8ae4b1835e5e8aec32f68c5059ed4d4_cgraph.map b/d8/d28/classrange__queries_1_1per_seg_tree_ae8ae4b1835e5e8aec32f68c5059ed4d4_cgraph.map
new file mode 100644
index 000000000..a794803f7
--- /dev/null
+++ b/d8/d28/classrange__queries_1_1per_seg_tree_ae8ae4b1835e5e8aec32f68c5059ed4d4_cgraph.map
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/d8/d28/classrange__queries_1_1per_seg_tree_ae8ae4b1835e5e8aec32f68c5059ed4d4_cgraph.md5 b/d8/d28/classrange__queries_1_1per_seg_tree_ae8ae4b1835e5e8aec32f68c5059ed4d4_cgraph.md5
new file mode 100644
index 000000000..da9fb5688
--- /dev/null
+++ b/d8/d28/classrange__queries_1_1per_seg_tree_ae8ae4b1835e5e8aec32f68c5059ed4d4_cgraph.md5
@@ -0,0 +1 @@
+c0bdb3aefa0e273418866ca9dc4da61b
\ No newline at end of file
diff --git a/d8/d28/classrange__queries_1_1per_seg_tree_ae8ae4b1835e5e8aec32f68c5059ed4d4_cgraph.svg b/d8/d28/classrange__queries_1_1per_seg_tree_ae8ae4b1835e5e8aec32f68c5059ed4d4_cgraph.svg
new file mode 100644
index 000000000..a3fcdf95c
--- /dev/null
+++ b/d8/d28/classrange__queries_1_1per_seg_tree_ae8ae4b1835e5e8aec32f68c5059ed4d4_cgraph.svg
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+range_queries::perSegTree::query
+
+
+
+Node1
+
+
+range_queries::perSegTree
+::query
+
+
+
+
+
+Node2
+
+
+range_queries::perSegTree
+::lazy
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+range_queries::perSegTree
+::newKid
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
diff --git a/d8/d28/classrange__queries_1_1per_seg_tree_af16c0c87b29119f066041d6e71ab50e0_cgraph.map b/d8/d28/classrange__queries_1_1per_seg_tree_af16c0c87b29119f066041d6e71ab50e0_cgraph.map
new file mode 100644
index 000000000..7c543c591
--- /dev/null
+++ b/d8/d28/classrange__queries_1_1per_seg_tree_af16c0c87b29119f066041d6e71ab50e0_cgraph.map
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/d8/d28/classrange__queries_1_1per_seg_tree_af16c0c87b29119f066041d6e71ab50e0_cgraph.md5 b/d8/d28/classrange__queries_1_1per_seg_tree_af16c0c87b29119f066041d6e71ab50e0_cgraph.md5
new file mode 100644
index 000000000..fbae0f056
--- /dev/null
+++ b/d8/d28/classrange__queries_1_1per_seg_tree_af16c0c87b29119f066041d6e71ab50e0_cgraph.md5
@@ -0,0 +1 @@
+20f3cace9089d9f1ac5e9b4a630b426f
\ No newline at end of file
diff --git a/d8/d28/classrange__queries_1_1per_seg_tree_af16c0c87b29119f066041d6e71ab50e0_cgraph.svg b/d8/d28/classrange__queries_1_1per_seg_tree_af16c0c87b29119f066041d6e71ab50e0_cgraph.svg
new file mode 100644
index 000000000..0ce080e90
--- /dev/null
+++ b/d8/d28/classrange__queries_1_1per_seg_tree_af16c0c87b29119f066041d6e71ab50e0_cgraph.svg
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+range_queries::perSegTree::update
+
+
+
+Node1
+
+
+range_queries::perSegTree
+::update
+
+
+
+
+
+Node2
+
+
+range_queries::perSegTree
+::lazy
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+range_queries::perSegTree
+::newKid
+
+
+
+
+
+Node1->Node3
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
diff --git a/d8/d28/classrange__queries_1_1per_seg_tree_af87494e6cf012d28c4f5b9d1c15f9c5d_cgraph.map b/d8/d28/classrange__queries_1_1per_seg_tree_af87494e6cf012d28c4f5b9d1c15f9c5d_cgraph.map
new file mode 100644
index 000000000..f43e2a1ef
--- /dev/null
+++ b/d8/d28/classrange__queries_1_1per_seg_tree_af87494e6cf012d28c4f5b9d1c15f9c5d_cgraph.map
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/d8/d28/classrange__queries_1_1per_seg_tree_af87494e6cf012d28c4f5b9d1c15f9c5d_cgraph.md5 b/d8/d28/classrange__queries_1_1per_seg_tree_af87494e6cf012d28c4f5b9d1c15f9c5d_cgraph.md5
new file mode 100644
index 000000000..d11751d8d
--- /dev/null
+++ b/d8/d28/classrange__queries_1_1per_seg_tree_af87494e6cf012d28c4f5b9d1c15f9c5d_cgraph.md5
@@ -0,0 +1 @@
+05716a7714ec381e9f9997bd4a8a6976
\ No newline at end of file
diff --git a/d8/d28/classrange__queries_1_1per_seg_tree_af87494e6cf012d28c4f5b9d1c15f9c5d_cgraph.svg b/d8/d28/classrange__queries_1_1per_seg_tree_af87494e6cf012d28c4f5b9d1c15f9c5d_cgraph.svg
new file mode 100644
index 000000000..fbbfa06f0
--- /dev/null
+++ b/d8/d28/classrange__queries_1_1per_seg_tree_af87494e6cf012d28c4f5b9d1c15f9c5d_cgraph.svg
@@ -0,0 +1,195 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+range_queries::perSegTree::update
+
+
+
+Node1
+
+
+range_queries::perSegTree
+::update
+
+
+
+
+
+Node2
+
+
+std::vector::push_back
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+std::vector::size
+
+
+
+
+
+Node1->Node3
+
+
+
+
+
+Node4
+
+
+range_queries::perSegTree
+::update
+
+
+
+
+
+Node1->Node4
+
+
+
+
+
+Node5
+
+
+range_queries::perSegTree
+::lazy
+
+
+
+
+
+Node4->Node5
+
+
+
+
+
+Node6
+
+
+range_queries::perSegTree
+::newKid
+
+
+
+
+
+Node4->Node6
+
+
+
+
+
+Node5->Node6
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/d8/d28/classrange__queries_1_1per_seg_tree_af87494e6cf012d28c4f5b9d1c15f9c5d_cgraph_org.svg b/d8/d28/classrange__queries_1_1per_seg_tree_af87494e6cf012d28c4f5b9d1c15f9c5d_cgraph_org.svg
new file mode 100644
index 000000000..a79ad3d98
--- /dev/null
+++ b/d8/d28/classrange__queries_1_1per_seg_tree_af87494e6cf012d28c4f5b9d1c15f9c5d_cgraph_org.svg
@@ -0,0 +1,107 @@
+
+
+
+
+
+
+range_queries::perSegTree::update
+
+
+
+Node1
+
+
+range_queries::perSegTree
+::update
+
+
+
+
+
+Node2
+
+
+std::vector::push_back
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+std::vector::size
+
+
+
+
+
+Node1->Node3
+
+
+
+
+
+Node4
+
+
+range_queries::perSegTree
+::update
+
+
+
+
+
+Node1->Node4
+
+
+
+
+
+Node5
+
+
+range_queries::perSegTree
+::lazy
+
+
+
+
+
+Node4->Node5
+
+
+
+
+
+Node6
+
+
+range_queries::perSegTree
+::newKid
+
+
+
+
+
+Node4->Node6
+
+
+
+
+
+Node5->Node6
+
+
+
+
+
diff --git a/d9/d31/coin__change__topdown_8cpp.html b/d9/d31/coin__change__topdown_8cpp.html
index 95236f0f4..fe53742a6 100644
--- a/d9/d31/coin__change__topdown_8cpp.html
+++ b/d9/d31/coin__change__topdown_8cpp.html
@@ -294,7 +294,7 @@ Here is the call graph for this function: