As many top rated programmers have said : Practice, Practice, Practice. I have been practicing since 1 year, I started with problem difficulty level around 1100 and solving around 60-70 problems of all levels till 1700. Now I am stuck at 1800. It takes me around 2 hours to solve 1 problem of this level(If I can't then after reading tutorial). I think this way learning is very slow.
Does someone have any alternate approach to improve the speed.