I've worked a bit with CodeChef and SPOJ. Both have problems that test problem solving abilities of varied nature.
However, I am unable to decide which one to follow through with. So I decided to ask the community.
What resources would you suggest for improving my thinking/algorithmic skills? Something, that'll have problems spanning all the fundamental concepts.
I am a student of Computer Science Engineering, and I'm not new to programming or algorithms; though I'm a far cry from being an expert.
I had tried my hand at Project Euler too, but you can get through those problems with sub-optimal solutions. For eg. the first problem's solution can be arrived by at by using an O(1) algorithm, but the system would accept a solution generated using an O(n) algorithm too. That wouldn't motivate deep thinking. (http://projecteuler.net/problem=1)