I have basic understanding of data structure and algorithms

(stack,queue, linked list, binary tree, graph,greedy,dp,little bit hashing,data structure for disjoint sets and little maths) with this knowledge I started solving problems on codechef and got frustrated I got to know that I need to learn lot of things everyday I am striking with some new horrible term like (today “DYNAMIC CONVEX HULL”) on codechef and all the problems needs too much of prerequisite and now I have got completely lost.

I have too many things to learn(like combinatorics, computational geometry and number theory,…bla bla) but I am not getting from where should I start and where should I end. Little knowledge of things has proven to dangerous on codechef.

For example previously I have herd of only three types of tees(bst, avl,redblack) but there are too many trees like fenwick,segmented, treaps… are we supposed to learn all of them.

Any one please pull me out of this darkness, please tell me how do I start, I have already mentioned brief summary of my knowledge. And that CLRS book how to read that book, that book is a ocean.

And please tell me what is the approach to learn any algorithm. First learn all of them and the start with codechef all learn one and practice its problem. I have tried the second approach, first learn one algorithm and then solve its problems. But what happened is there are too much perquisites on codechef they club too many concepts together to form a single problem.

Are the top coder tutorials enough.

How the have become such a great programmer @likecs @uwi @xellos @gennedy

Any help would be appreciated.

Thanks in Advance.