diff --git a/src/1-ds/pbds.cpp b/src/1-ds/pbds.cpp index 3ed73ae..87af3a4 100644 --- a/src/1-ds/pbds.cpp +++ b/src/1-ds/pbds.cpp @@ -2,7 +2,15 @@ #include #include using namespace __gnu_pbds; -using ordered_set = tree, rb_tree_tag, tree_order_statistics_node_update>; -ordered_set st; +using pbds = tree, rb_tree_tag, tree_order_statistics_node_update>; +pbds st; st.order_of_key(x); // number of elements strictly less than x -st.find_by_order(x); // value of xth element (0-based) \ No newline at end of file +st.find_by_order(x); // value of xth element (0-based) + +// multiset pbds (use "less_equal" and custom "m_erase") +using multi_pbds = tree, rb_tree_tag, tree_order_statistics_node_update>; +void m_erase(multi_pbds &OS, int val) { + int index = OS.order_of_key(val); + multi_pbds::iterator it = OS.find_by_order(index); + OS.erase(it); +}