Note: This is an opinion not a fact that is set in stone. I may be wrong in what I say...
The best data structure is clearly a vector (not for all use cases, but it can be surprisingly good in a lot).
Here's why. A vector is like the NAND of data structures. You can use it to implement anything. Binary tree: 1d vector. Graph: 2d Vector (Adjacency matrix or list). Map: Vector[Index] is the same as map[index].
Also, vectors are easy to use.
If we stop using vectors, we lose a lot in programming, as it is the basic dynamic array structure for C++ (for Python3 this is a list and for Java this is an ArrayList<> I think). One day, someone will make a contest that forces data structure usage (like CarViz said) and instead of forcing a tree, we should force the vector.
Using a vector and nothing else forces one to think deeply about how the components of programming that we use regularly work, including hashing, sets, and maps. This would be good for beginners as well, who primarily lose rating from things like speedforces (they can solve and implement, but don't have speed).
Imagine if a contest said:
You are given a list of edges in a graph in the form "x y" on each of n lines and need to find if a path exists from node a to b. This would be something simple: DFS or BFS on an adjacency list. This could be easy to code and simple with a 2d vector.
A more difficult problem would be to make a problem where you would have to search for indices in a list. Now the standard solution would be to use a map or unordered_map in C++, but in this case we would find a way to use a vector which is binary search. That could make the time complexity at most O(m * log n) instead of O(m * n) with brute force search (although maps get time complexity O(m * x) where x is a small constant from map searching).
These types of problems should be on CodeForces which force us not to speed run or find sneaky ad-hoc style ideas, but instead to focus on building a unique solution from simple components like basic searching and sorting. This helps newbies like me who want to become higher-rated on CodeForces and higher rated users gain a deeper understanding of what they deal with every time they solve a problem on CodeForces, LeetCode, AtCoder, or on any other online coding platform.
Hopefully, CodeForces can look at this blog and see where I'm coming from, without flaming me. I very much recognize the utility of other data structures, I'm just pitching an idea.









