This is the companion web site for a book: “Competitive Programming 3: The New Lower Bound of Programming Contests”
and its two past editions written by myself (Steven Halim –
UVa status, Kattis status) and
my younger brother (Felix Halim – UVa status, Kattis status) in 2010 – present (2018).
This book is used in my course in School of Computing,
National University of Singapore:
CS3233 – Competitive Programming (2009-present) and available for wider audiences since 2010.
This book contains a collection of competitive programming skills gained by solving more than
3 000+ UVa (1999-present) plus Kattis (2015-present) online judge problems.

Major update (Wednesday, 01 January 2020): CP3 (~2018 interim version) is now available in Spanish language. If you are a Spanish-speaking programmer,
we recommend that you get the Spanish version that has been translated over the past 1+ year by Miguel Revilla Rodriquez (the current admin of (UVa) Online Judge).
Here is the Amazon Link, ISBN: 978-1711024813.

Major update (Monday, 03 December 2018): We have updated almost all demo code that we have in CP3 into code that we will use in future CP4.
We no longer use use the download page but use the following public GitHub repo instead:

Major update (Tuesday, 24 October 2017): CP3 is now available in Korean language. If you are Korean,
we recommend that you get the Korean version that has been translated over the past 1+ year by lewha0.
Here is the publisher link: Insight Book, Korea.


This book contains a collection of relevant data structures, algorithms, and programming tips written for University students who want to be more competitive in the
International Collegiate Programming Contest (ICPC), high school students who are aspiring to be competitive in the
International Olympiad in Informatics (IOI), coaches for these competitions,
those who love problem solving using computer programs, and those who go for interviews in big IT-companies.

“I cannot imagine a better complement for the UVa Online Judge site.”

Miguel A. Revilla, UVa Online Judge site creator, ACM-ICPC Problem Archivist

“Competitive Programming is a unique resource that I recommend to any student interested in raising their algorithmic programming skills to
the next level. It is packed with insightful tips and techniques that are hard to find elsewhere, and remarkably thorough in its use of
examples and references to sample problems.”

Brian C. Dean, Associate Director, USA Computing Olympiad


Our objective in writing this book is similar with the ICPC vision: To further improve humanity by training current students to be more competitive in programming contests.
The possible long term effect is future Computer Science researchers who are well versed in problem solving skills. We use both C++ and Java code to illustrate the algorithmic concepts,
i.e. we dislike vague pseudo-code commonly found in many other Computer Science textbooks. We also use visualization tool: VisuAlgo
to help explain the data structure and algorithm concepts to our audiences and beyond.

Target Audiences

  • Readers with background knowledge in basic data structures, basic algorithms and at least one programming language of either C++ or Java
  • Students who have passed “Programming Methodology”, “Data Structure and Algorithms”, or equivalent modules
  • Participants of National or International Olympaid in Informatics, ACM International Collegiate Programming Contests (Local, National, Regional or World Finals level)
  • Participants of other (online) programming contests
  • Coaches of a group of competitive programmers
  • IT professionals who are looking for interesting technical/algorithmic questions for IT interview

Source Article