Data structures

There's currently three data structures being defined: FenwickTree, Graph and Queue.

FenwickTree

This data structure is utilized for quickly answering queries of type "tell me a position of the closest item from this position" while allowing to add and remove items during runtime.

Graph

Used in the matrix problem (both in generator and judge). Is capable of generating (pseudo)random trees/graphs and reporting shortest paths.

Queue

Used by the game engine to queue instructions in case the interpreter is busy at the moment. Implemented using linked lists.