The first and most important thing i would like to suggest is PRACTICE. To practice ,i would suggest you first start with the last (bottom most) problem in easy practice section and move up the ladder depending on how comfortable you are.You might think it as a waste of time attempting very easy questions but each question has a different concept and will offer you a lot to learn.
The main problem with going to medium or even slightly tougher problems of easy straight away is that these problems require not only good logic but in many cases knowledge of some simple or advanced data structures that are not very difficult to learn but you will learn them only after a certain level of practice and experience.
Proceed at the pace you find comfortable but start from the easiest to get a better understanding about the difficulty of problems where you get stuck and your weaknesses.
- Contests: Keep participating in contests and try to solve all questions on your own even if that means you do only 2-3 questions.Try to solve as many questions as possible even if you have to spend 2-3 days learning something new during the contest time. Refer to the graphs of some of the top coders and you will find that even they started with 1 or 2 questions but over 2-3 years of practice has made them into exceptional coders today.
The most important qualities that you require are patience and practice.If you have these, you will be at the top in no time.happy coding