I have been going through https://www.ic.unicamp.br/~meidanis/courses/mc336/2009s2/pro...
It starts out pretty easy but gets harder and requires more thought. It has different sections on things like list processing or graph problems.