As a way to solve Problem E from ZeptoLab Code Rush 2014, I decided to implement Treap for the first time. Treap is a randomized binary search tree that the maximum height of the tree is about O(log n)
(similar to AVL tree). It’s easier to implement than a normal AVL tree. Why do I have to implement it? I need to perform these operations in O(log n)
: Add, Remove, Find the sum of the k
smallest elements. My implementation was added here.
Note that this problem E can also be solved by other data structures: Binary Indexed Tree, Cartesian tree or Priority Queue, because this problem only requires calling this operation, “Find the sum of the k
smallest elements”, multiple times with the non-ascending value of k
.