Your first time on this page? Allow me to give some explanations.
Awesome Competitive Programming
A curated list of awesome Competitive Programming, Algorithm and Data Structure resources
Here you can see meta information about this topic like the time we last updated this page, the original creator of the awesome list and a link to the original GitHub repository.
Thank you lnishan & contributors
View Topic on GitHub:
Search for resources by name or description.
Simply type in what you are looking for and the results will be filtered on the fly.
Further filter the resources on this page by type (repository/other resource), number of stars on GitHub and time of last commit in months.
List of Lists
A collection of fantastic tutorial blog posts written by Codeforces users. Some intriguing ones include Palindromic Trees, Policy Based Data Structures, and a lot more. |
Another good collection of tutorial blog posts written by Codeforces users. |
A very complete list of competitive programming resources. A must-have in your browser bookmark. |
A detailed syllabus on which IOI contestants will be tested. This is still somewhat relevant to ACM-ICPC. |
A detailed walk-through of the preparations for ACM-ICPC. |
A list of important topics in competitive programming with exercise problems. |
This repository contains a subset of pointers to solutions with editorials and notes to my trainees (ACM ICPC, OJs, IOI, POI, CEOI, JOI, etc). For IOI/OI, I organized what I found on the web from official solutions and materials.
A list of tutorials written by respected Topcoder members. Many top programmers started learning data sciences from here. |
English)](http://cp-algorithms.com/) | A tutorial website widely used and referenced in the Russian-speaking competitive programming community. Most of the articles of the original site have been translated into English, Google Translate works okay for the remaining ones. |
A website with a large archive of nicely written articles on different topics. It is a great complimentary resource for algorithm courses. |
A website with amazing in-depth wiki-like writeups on many topics. It's far better than those on Wikipedia in my opinion. |
A great crowdsourcing platform for tutorials. Also visit Code Monk. |
Contains several training pages on its website which are designed to develop one's skills in programming solutions to difficult and varied algorithmic problems at one's own pace. |
A blog with in-depth, illustrated tutorials on basic algorithms and data structures. |
Short video tutorials for beginner and intermediate concepts. Advanced tutorials selected from the best ones available on various CP blogs. |
An international journal focused on the research and practice of professionals who are working in the field of teaching and learning informatics to talented student. |
A Russian website devoted to algorithms of all sorts. Some topics listed on this website seems pretty interesting. |
Papers from the Chinese IOI training camps. It's interesting for the fact that one can tell different regions emphasize different things. |
The repository contains the ENGLISH description files attached to the video series in my ARABIC algorithms channel.
by HackerEarth | A fantastic step-by-step tutorial on the essential topics in competitive programming. |
Introduction to Competitive Programming Stanford University
A course by ITMO University on competitive coding on edX.|
Video Lectures from Codechef's Indian Programming Camp 2016. Lectures given by top competitive programmers like Sergey Kulik, Kevin Charles Atienza and Anudeep Nekkanti. Primarily focused on exploring these concepts by applying them to actual competitive contest problems. |
An awesome course taught by Bjarki Ágúst Guðmundsson (SuprDewd). These lectures feature neat slides and a nice list of problems to practice. |
A course on basic topics featuring good lecture slides. |
Open Courses for Algorithms and Data Structures
List of awesome university courses for learning Computer Science!
Lectured by Prof. Charles Leiserson (one of the coauthors of Introduction to Algorithms) and Prof. Erik Demaine (a brilliant professor who has made remarkable breakthroughs in data science), the course offers great materials, accompanied by intuitive and comprehensive analyses. |
by Steven and Felix Halim | This book contains a collection of relevant data structures, algorithms, and programming tips. It's a well-received book. ... The first edition is free for download (pdf). |
by Steven Skiena and Miguel Revilla | This book includes more than 100 programming challenges, as well as the theory and key concepts necessary for approaching them. Problems are organized by topic, and supplemented by complete tutorial material. |
by Antti Laaksonen | An introduction to competitive programming for aspiring IOI and ICPC contestants. Free to download (pdf). |
by Mark de Berg, Otfried Cheong, Marc van Kreveld, Mark Overmars | This is a well-written book which covers a broad range of computational geometry problems. |
by Nite Nimajneb | This book is free for download (pdf). This book covers various topics relevant to competitive programming. |
by 秋葉拓哉, 岩田陽一, 北川宜稔 | An absolutely phenomenal book. The contents, organized in a very coherent manner, are nothing short of amazing. ... 培養與鍛鍊程式設計的邏輯腦：世界級程式設計大賽的知識、心得與解題分享 (Chinese Traditional) |
by 刘汝佳 | The Art of Algorithms and Programming Contests (English), 打下好基礎：程式設計與演算法競賽入門經典 (Chinese Traditional) |
by 刘汝佳, 陈锋 | 提升程式設計的解題思考力─國際演算法程式設計競賽訓練指南 (Chinese Traditional) |
Books for Algorithms
by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein | Also known as CLRS (taken from name initials), this book is often referred to as the "bible" for algorithms and data structures. It's one of the most popular textbooks for university algorithm courses. This book covered various algorithms and data structures in great detail. The writing is more rigorous and can be difficult to some. |
by Jon Kleinberg and Éva Tardos | This book revolves around techniques for designing algorithms. It's well-organized and written in a clear, understandable language. Each chapter is backed with practical examples and helpful exercises. The chapter on network flow is highly praised by lots. ... The lecture slides that accompany the textbook are available on its official website. |
by Steven S. Skiena | The book is written in more readable text. Some find it comprehensive than other books. You can also find some good resources (including the author's own video lectures) on its official website. |
by Robert Sedgewick and Kevin Wayne | This book is neatly categorized, coupled with elaborate explanations and fantastic illustrations. It is used in some IOI training camps as a textbook. |
A different and a great way to introduce algorithms and data structures that can be used at work.
Books for Mathematics
by Kenneth H. Rosen | Discrete Mathematics is closely relevant to competitive programming. This book provides comprehensive materials on a wide range of topics including: Logics and Proofs, Sets, Functions, Sequences, Matrices, Number Theory, Recursion, Counting, Probability, Graphs, Trees and Boolean Alegra to name but a few. |
by Ronald L. Graham, Donald E. Knuth, Oren Patashnik | The book offers a deeper insight into Discrete Mathematics with more emphases on number-related topics. |
by David C. Lay, Steven R. Lay, Judi J. McDonald | The book does a brilliant job at bridging the gap between a physical system (for scientists and engineers) and an abstract system (for mathematicians). |
by Charles M. Grinstead, J. Laurie Snell | This is a well-written introductory probabilities book. ... It's free for download (pdf) (released under GNU Free Documentation License). |
by G. Polya | An old-time classic. In this book, the author provides a systematic way to solve problems creatively. |
by David Patrick | Topics in counting and probability byformer USA Mathematical Olympiad winner David Patrick , topics include inclusion-exclusion, 1-1 correspondences, the Pigeonhole Principle, constructive expectation, Fibonacci and Catalan numbers, recursion, conditional probability, generating functions, graph theory, and much more.. |
Sites for Practice
Lots of problems and real world/money worthy problems in Graphic Design, Data Science and Development.
Google Code Jam is certainly one of the most highly-esteemed programming competitions. The competition consists of unique programming challenges which must be solved in a fixed amount of time. Competitors may use any programming language and development environment to obtain their solutions. |
AtCoder is a new but phenomenal contest platform created by a team of highly-rated Japanese competitive programmers. |
The SPOJ platform is centered around an online judge system. It holds a staggering amount of problems prepared by its community of problem setters or taken from previous programming contests, some of which are great problems for practice (refer to the Problem classifiers section). SPOJ also allows advanced users to organize contests under their own rules. |
Timus Online Judge is the largest Russian archive of programming problems with automatic judging system. Problems are mostly collected from contests held at the Ural Federal University, Ural Championships, Ural ACM ICPC Subregional Contests, and Petrozavodsk Training Camps. |
HDU is an online judge maintained by Hangzhou Dianzi University. It's home to many classic problems from the Chinese IOI scene. |
Aizu online judge is a contest platform and problem archive hosted by The University of Aizu. It has a lot of great problems from programming competitions in Japan. |
Hundreds of problems (from previous ACM-ICPC Regionals, World Finals and others).
HackerRank is a company that focuses on competitive programming challenges for both consumers and businesses. HackerRank's programming challenges can be solved in a variety of programming languages and span multiple computer science domains. |
Mathematical problems that can be solved using algorithms (or just a pencil, depends on how much you already know).
Practice alogrithmic problems & challenges and participate in hiring challenges.
COJ is hosted by University of Informatics Sciences (UCI, by its acronym in Spanish), located in Cuba. Feature ACM ICPC and Progressive contest styles, mostly from Caribbean and Latin American problem setters, also has problem classifier and contest calendar. |
Programming competitions powered by Mail.Ru Group. Competition consists of 3 qualification, 1 elimination and 1 final rounds. For each round contestants are given 4-8 problems which must be solved in a fixed amount of time. |
DEPRECATED -> Checkout nishanthvijayan/CoderCalendar-Extensions
Google Calendar export available |
iOS App](https://itunes.apple.com/in/app/codehorizon/id925056167?mt=8), Android App | |
Sites for Questions
You would typically get more elaborate answers on Quora, but you might not have your questions answered straightaway. |
Camps and Trainings
C++ Implementation of Algorithms (aka. Spaghetti Source)
KTH Algorithm Competition Template Library (... eller KTHs AC-tillverkande lapp)
Stanford ACM-ICPC related materials
NUS ACM Team's Notebook for ACM ICPC World final 2016
CodeBook for Team BCW
Cheat sheet for ACM-ICPC. In memory of those good old days.
by Andrey Naumenko (indy256) | CodeLibrary contains a large collection of implementations for algorithms and data structures in Java and C++. You may also visit his GitHub Repository. |
Part 2](https://www.topcoder.com/community/data-science/data-science-tutorials/power-up-c-with-the-standard-template-library-part-2/) | An introductory tutorial on basic C++ STLs. |
Learn more about C++ I/O optimizations. |
What are some cool C++ tricks to use in a programming contest? - Quora](https://www.quora.com/Competitive-Programming/What-are-some-cool-C++-tricks-to-use-in-a-programming-contest) | Plentiful C++ tricks for competitive programming. Note that some should be used with care. |
Part 2](http://codeforces.com/blog/entry/13279) | Detailed introduction to the extra data structures implemented in GNU C++. The official documentation can be found here. |
A list of FAQs regarding C++11 collected and written by Bjarne Stroustrup, the creator of C++. |
Learn how to read input faster. This is a must-read for those who intend to use Java for competitive programming |
Some tips on how to avoid hitting the worst case of quick sort |
A basic but faster custom BigInteger class |
A Java library for contests written by Alexey Dergunov (dalex). ArrayList, ArrayDeque, Heap, Sort, HashSet, HashMap, TreeSet, TreeMap, TreeList and pair classes are implemented |
Everything you need to know about floating point numbers. A must read especially for geometry topics. |
A detailed side-by-side reference sheet for common syntaxes. |
CLI / Cross-Platform | Vim is one of the most popular text editors among advanced programmers. It allows text-editing to be done very efficiently with solely keystrokes. Vim is also highly configurable, extensible and integrates with shells (command lines) really well. The only setback about Vim is that it has a high learning curve for beginners. |
CLI / Cross-Platform | Emacs is another popular text editor (or development environment to be more precise). The debate on "Vim vs. Emacs" is constantly brought up due to their popularity. Basically Emacs is more than just a text editor. It has plugins like file managers, web browsers, mail clients and news clients that allows users to performs these tasks directly inside Emacs. Emacs is "heavier" because of this, but it arguably has a relatively easier learning curve for beginners. |
Hybrid / Windows | Far Manager is the most widely-used editor in the RU/CIS competitive programming community. It's actually a file manager in its bare bones, but you can install FarColorer - a syntax highlighter plugin to program on it. Properly configured, Far Manager allows you to navigate between files very efficiently while writing your codes. |
GUI / Cross-Platform | Code::Blocks is the go-to IDE for C/C++. It's a full-fledged, versatile IDE with numerous great features. Code::Blocks is usually provided along with Vim in programming contests. |
GUI / Cross-Platform | IntelliJ IDEA is certainly one of the best IDEs for Java. It's used by most competitive programmers who use Java as their main language. Be sure to check out CHelper, a very handy plugin written for programming contests. |
GUI / Cross-Platform | Sublime Text is an extraordinary text editor. Packed with powerful and innovative features like Multiple Carets, Minimaps and Command Palletes, it attracts a strong and engaging community. Sublime Text is highly extensible, so be sure to have Package Control installed and explore perhaps one of the largest catalogue of plugins! |
A PHP IDE based on the Eclipse platform.
GUI / Cross-Platform | CLion, produced by JetBrains - the same company who made Intellij IDEA, is a powerful IDE for C++. Free educational licenses are available OR you can try out their EAP (Early Access Program) which is still free as of Apr, 2018. You may want to turn off its code inspection feature as it will cause quite a bit of lag. |
Parse sample tests of Codeforces competitions, and generate tests automatically.
IntelliJ IDEA) (manual) ... caide (Visual Studio, CodeLite, standalone command line app) ... JHelper (AppCode, CLion) online-judge-tools (Stand alone CLI tool, It is actively maintained.) | Great tools that parse contests, inline library codes and provide testing frameworks. They save you from spending your precious time on switching windows and copy-pasting back and forth. |
A stunning encyclopedia with a database of countless integer sequences. It also features a powerful search engine. Sometimes a seemingly difficult combinatorics problem could be equivalent to a simple or studied integer sequence. |
markup.su](http://markup.su/highlighter/) ... hilite.me | Very handy for creating slides or team notebooks with pretty, formatted code snippets. Just copy the highlighted code snippets and paste them in your favorite WYSIWYG (What-You-See-Is-What-You-Get) editor! |
Pastebin.com](https://pastebin.com/) ... Ubuntu Pastebin | These tools generate semi-permanent pages for code sharing. Very useful especially when you're trying to get someone else to look into your code. |
Test cases generation framework for competitive programming problems
polygon provides a platform and a rich set of tools for professional contest preparation. ... An example: Validators with testlib.h - Codeforces |
A fantastic tool to create and visualize graphs. |
Virtual Judge (vjudge) allows users to create virtual contests with problems from notable problem archives. |
BNU Online Judge also allows users to create virtual contests. |
A good blog by Petr Mitrichev, mainly in Java.
Youtube and Livestreams
with contest updates and problem tutorials of HackerRank, LeetCode, Topcoder and Codeforces. |
Executive Director of ACM-ICPC. CS Professor at Baylor University. |
Brian Bi (bbi5291)](https://www.quora.com/profile/Brian-Bi) | Jonathan Paulson (jonathanpaulson) |
Egor Suvorov (yeputons)](https://www.quora.com/profile/Egor-Suvorov) | Michal Danilák (Mimino) |
Vladimir Novakovski (vnovakovski)](https://www.quora.com/profile/Vladimir-Novakovski) | Nick Wu (xiaowuc1) |
Lalit Kundu (darkshadows)](https://www.quora.com/profile/Lalit-Kundu) | Ashish Kedia (ashish1294) |
Joshua Pan (lonerz)](https://www.quora.com/profile/Joshua-Pan-1) | Anudeep Nekkanti (anudeep2011) |
by Przemysław Dębiak (Psyho) |
by Thanh Trung Nguyen (I_love_Hoang_Yen) |
by Huang I-Wen (dreamoon) |
by Vishwesh Shrimali |
by Ravi Ojha |
What is the best strategy to improve my skills in competitive programming in 2-3 months? - Quora](https://www.quora.com/What-is-the-best-strategy-to-improve-my-skills-in-competitive-programming-in-2-3-months) ... What is a good 6 month plan to start and progress through competitive programming? - Quora |
A curated list of awesome places to learn and/or practice algorithms.
collection of projects and links about algorithm visualization
A curated list of awesome mathematics resources
A curated list of awesome C++ (or C) frameworks, libraries, resources, and shiny things. Inspired by awesome-... stuff.
A curated list of awesome frameworks, libraries and software for the Java programming language.
List of awesome university courses for learning Computer Science!
Freely available programming books
A curated awesome list of lists of interview questions. Feel free to contribute!
The most popular website for software engineering interview preparation. |
Features intriguing and refreshing game-play designs which are designed to invoke one's interest in practicing. |