gitextract_ns7a50wl/ ├── README.md ├── data_structures/ │ ├── clever_adding_intervals_set.hpp │ ├── compressed_fenwick.hpp │ ├── decremental_constant_set.hpp │ ├── fenwick.hpp │ ├── fenwick_2d.hpp │ ├── fenwick_range_update.hpp │ ├── fenwick_range_update_range_query.hpp │ ├── heap.hpp │ ├── meldable_heap.hpp │ ├── merge_sort_tree.hpp │ ├── monoids_lazy.hpp │ ├── nonintersecting_range_tree.hpp │ ├── offline_segment_tree_2d.hpp │ ├── rmq2d.hpp │ ├── segment_tree.hpp │ ├── segment_tree_lazy.hpp │ ├── set_lazy.hpp │ ├── sparse_table.hpp │ ├── sparse_table_disjoint.hpp │ ├── treap.hpp │ ├── treap_lazy.hpp │ └── wavelet_tree.hpp ├── dp_optimizations/ │ └── convex_hull_trick.hpp ├── geometry/ │ ├── dynamic_convex_hull.hpp │ ├── halfplane_intersection.hpp │ ├── point.hpp │ ├── polygon.hpp │ └── voronoi.hpp ├── graph/ │ ├── bcc.hpp │ ├── bipartite_coloring.hpp │ ├── bipartite_matching.hpp │ ├── dijkstra_vlog.hpp │ ├── directed_cactus.hpp │ ├── dsu.hpp │ ├── eppstein_shortest_paths.hpp │ ├── eulerian_paths.hpp │ ├── graph.hpp │ ├── hopcroft_karp.hpp │ ├── hungarian_algorithm.hpp │ ├── maxflow.hpp │ ├── mincost_circulation.hpp │ ├── mincost_flow.hpp │ ├── scc.hpp │ ├── st_numbering.hpp │ └── two_sat.hpp ├── math/ │ └── gauss_bitset.hpp ├── old_impl/ │ ├── data_structures/ │ │ ├── implicit_treap.hpp │ │ ├── implicit_treap_basic.hpp │ │ ├── max_count_segment_tree.cpp │ │ ├── merging_segment_tree.cpp │ │ ├── min_segment_tree.cpp │ │ ├── monotonous_queue.cpp │ │ ├── persistent_segment_tree.cpp │ │ ├── persistent_segment_tree_lazy.cpp │ │ ├── persistent_treap.cpp │ │ ├── persistent_treap_lazy.cpp │ │ ├── segment_tree.cpp │ │ ├── segment_tree_AP.cpp │ │ ├── segment_tree_add_mult.cpp │ │ ├── segment_tree_fast.cpp │ │ ├── segment_tree_lazy_min.cpp │ │ ├── segment_tree_lazy_sum.cpp │ │ ├── segment_tree_nonzero.cpp │ │ ├── segment_tree_with_binary_search.cpp │ │ └── treap.cpp │ ├── geometry/ │ │ ├── closest_points.cpp │ │ ├── convex_hull.cpp │ │ ├── dynamic_upper_hull.cpp │ │ ├── kd-tree.cpp │ │ └── rectangle_union.cpp │ ├── graph/ │ │ ├── dsu_bipartite.cpp │ │ ├── eulerian_path.cpp │ │ ├── max_anticlique.cpp │ │ ├── maximum_closure.cpp │ │ ├── mincost_maxflow.cpp │ │ ├── persistent_dsu.cpp │ │ ├── scc_tarjan.cpp │ │ └── st_numbering.cpp │ ├── math/ │ │ ├── combinatorics.cpp │ │ ├── fft.cpp │ │ ├── fft_mod.cpp │ │ ├── fft_xor.cpp │ │ ├── fft_xor_mod.cpp │ │ ├── gauss_elimination_equations.cpp │ │ ├── gauss_elimination_equations_mod.cpp │ │ ├── gauss_elimination_equations_mod_number_solutions.cpp │ │ ├── matrix_exponential.cpp │ │ └── number_theory.cpp │ ├── strings/ │ │ ├── aho_corasick.cpp │ │ ├── aho_corasick_dynamic.cpp │ │ ├── kmp.cpp │ │ ├── palindromic_tree.cpp │ │ ├── rabin_karp.cpp │ │ ├── suffix_array.cpp │ │ ├── suffix_array_hash.cpp │ │ ├── suffix_array_log2.cpp │ │ ├── suffix_automaton.cpp │ │ └── trie.cpp │ └── tree/ │ ├── centroid_decomposition.cpp │ ├── dsu_on_tree.cpp │ ├── hld.cpp │ ├── lca-seg3.cpp │ ├── link_cut_tree.cpp │ └── virtual_tree.cpp ├── other/ │ ├── bits/ │ │ ├── bit_trie.hpp │ │ └── xor_basis.hpp │ ├── dp_optimizations/ │ │ ├── LiChao_dynamic.cpp │ │ ├── LiChao_parabolic.cpp │ │ ├── LiChao_segment_tree_offline.cpp │ │ ├── convex_hull_trick_max.cpp │ │ ├── convex_hull_trick_min.cpp │ │ ├── divide_and_conquer_optimization.cpp │ │ ├── slope_trick.cpp │ │ └── slope_trick_priority_queue.cpp │ ├── queries/ │ │ ├── mo.cpp │ │ ├── mo_dsu.cpp │ │ ├── mo_online.cpp │ │ └── offline_centroid_queries.cpp │ └── utils/ │ └── count_inversions.cpp ├── strings/ │ ├── aho_corasick.hpp │ ├── hashing.hpp │ ├── suffix_array.hpp │ └── suffix_automaton.hpp └── tree/ ├── centroid_decomposition.hpp ├── euler_order_segment_tree.cpp ├── lca.hpp ├── lca_sparse_table.hpp ├── line_tree.hpp ├── link_cut_tree.hpp ├── vertex_add_path_sum.hpp └── virtual_tree.hpp