Which is the best place to practice among these two and what strategy would you use to practice if you are at my level of coding.

Please don't say both are equal. In your sight any one must be having slight edge over the other. Please do discuss the strategy to practice(which must be little fast(Though I don't want to be perfect coder in a night, because that is not possible)). Your guidance will be really appreciated.

It depends on what you want to do. If you want to prepare yourself for ACM ICPC like contests probably CodeForces is a bit more similar to the problems you'll have to solve in ICPC.

TopCoder is about coding fast and without bugs, and that's a skill that is very hard to achieve, but you also have to solve hard problems.

CodeForces is more about having new ideas (I find similar ideas in a lot of TopCoder problems, but that doesn't happen very often with CodeForces) and you prepare your mind to think more than what you prepare your hands to code like in TopCoder.

When I decided I wanted to be a better coder, I started solving lots of TopCoder DIV II — Easy problems as fast as I could so I could start coding fast without lots of bugs, but I also solved a lot of ICPC problems in 5 hour contests because I felt that TopCoder problems weren't what I need for preparing for the ICPC.

Thank you very much for responding to my concern. Actually I wanna practice for ICPC. I know practice is the only way, but what way of practice can be more fruitful.

Other than participating in real-time contest, In codeforces what strategy would you imply: 1. solving problems from the

problemset in ascending order of difficulty. 2. solving problems by running avirtual contest. 3. solving problem bycategory(graph, dp , greedy, etc.,) in ascending order of difficulty. 4. or any otherFor practicing contest situation, participate with the complete problemset and try solving from the easiest to the hardest problem. For practicing problems outside of contest you should practice with problems where you don't actually know the difficulty of each one and where you also don't know the problem category. If you want to improve a specific type of problem go to http://uva.onlinejudge.org and you have some categories divided by type of problems. You can also try solving problems in http://livearchive.onlinejudge.org It's also a good idea to try solving problems together with your teammates (of your ICPC team)

twice