I am not a PRO in any way, but still I am writing this answer.
Firstly, try to participate in more and more contests. In this way, you will get familiar with many new concepts and common ideas.Also, it will help you in implementation skills which is not necessarily equal to typing skill speed.
After the contest is over, try looking at the solution bit by bit and try to solve it then. Most people just go through the whole solution, but I think that going bit by bit will help you to improve faster.
For data structures, I would say buy Algorithm Design Manual by Skiena over any online material. Just read that book , preferably two hours or more each day.Other than that, MIT OCW in youtube is good and so is Tushar Roy’s examples for basic understanding , especially of segment trees.
For practice,a2-online judge’s categories are about the best thing you can get.Also good is USACO training page.
Overall, I would say that two hours of studying, 2 hours of coding and 1 hour of checking or reading editorials or other people’e solution would be good enough.