Book by Steven Halim published in 2013
This is the book I've spent the most time with ever, studied the three revisions of those books over two years, and really like them and recommend them left and right. They are by far the best resource for competitive programming, and that's why it gets a better rating than if more books were available. The introductions to the algorithms and data structures are fairly superficial—which is actually a good thing, otherwise you'd be overwhelmed. To start out, you need that, and not deep understanding of mathematical proofs. I don't like the UVA problems referenced, they are unimaginative and the judge is fairly poor. I prefer IOI-style problems much more, and used other judges with categorization systems to practise.