Data structure that allows accessing elements by index and delete them in O(logn)
Take any self-balancing binary tree (e.g. AVL) and replace every node's key with the number of left descendants it has. This is easy to keep up-to-date for tree insertions/deletions (in $O(log n)$ time), and rotations (in $O(1)$ time).
Then to find the node with index $i$ you start at the root and repeatedly compare $i$ with the value of the current node $v$. If $i &lt; v$ you go to the left child, $i = v$ you found the correct node and $i &gt; v$ you subtract $i := i - v$ and go to the right child.