This is a project I started from late January 2016.
My motive is that: Although there's fantastic information out there, I think they're still spread all over the place. Therefore, in my opinion it would probably be cool if there's an awesome list for competitive programming! ( It's now featured on the main list! )
I'm actively updating the list here: https://github.com/lnishan/awesome-competitive-programming
Awesome Competitive Programming
A curated list of awesome Competitive Programming
, Algorithm
and Data Structure
resources.
Created with a view to connecting people to information, this list below contains a complete collection of all the fantastic resources I've collected over the course of my 11-year competitive programming career. I hope you'll find it useful :)
What is competitive programming? — Quora
Contributing
Please kindly follow CONTRIBUTING.md to get started.
You can also contribute by sharing!
Share the list with your classmates, your friends and everyone :)
By connecting more people to information,
You, are doing not me, but everyone a HUGE favor!I really hope that more people can benefit from this list :)
Table of Contents
- List of Lists
- Syllabuses
- Tutorial Websites
- Open Courses
- Books
- Sites for Practice
- Sites for Questions
- Implementations
- Language Specifics
- C/C++ | Java | Miscellaneous
- Tools
- Community
- Other Awesome Resources
- License
List of Lists
Awesome curated lists classified by topics.
☆ | Name | Description |
---|---|---|
★★★ | Good Blog Post Resources about Algorithm and Data Structures — Codeforces | 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. |
★★★ | All of the good tutorials found on codeforces — Codeforces | Another good collection of tutorial blog posts written by Codeforces users. |
★★★ | Data Structures and Algorithms — CodeChef Discuss | A very complete list of competitive programming resources. A must-have in your browser bookmark. |
★★★ | How to prepare for ACM — ICPC? — GeeksforGeeks | A detailed walk-through of the preparations for ACM-ICPC. |
Syllabuses
Find out what topics you need to learn.
☆ | Name | Description |
---|---|---|
★★★ | IOI Syllabus | A detailed syllabus on which IOI contestants will be tested. This is still somewhat relevant to ACM-ICPC. |
★★★ | How to prepare for ACM — ICPC? — GeeksforGeeks | A detailed walk-through of the preparations for ACM-ICPC. |
★★☆ | Programming Camp Syllabus | A list of important topics in competitive programming with exercise problems. |
★★☆ | Juniors Training Sheet, by Mostafa Saad Ibrahim | Simple problems for newcomers |
Tutorial Websites
Awesome websites with great tutorials.
☆ | Name | Description |
---|---|---|
★★★ | Topcoder Data Science Tutorials | A list of tutorials written by respected Topcoder members. Many top programmers started learning data sciences from here. |
★★★ | E-Maxx (Russian), (English) | A tutorial website widely used and referenced in the Russian-speaking competitive programming community. Only a small fraction of the original site is translated into English, but Google Translate would work okay. |
★★☆ | Algorithms — GeeksforGeeks | A website with a large archive of nicely written articles on different topics. It is a great complimentary resource for algorithm courses. |
★★☆ | PEGWiki | A website with amazing in-depth wiki-like writeups on many topics. It's far better than those on Wikipedia in my opinion. |
★★☆ | Notes — HackerEarth | A great crowdsourcing platform for tutorials. Also visit Code Monk. |
★★☆ | USA Computing Olympiad (USACO) | 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. |
★★☆ | basecs | A blog with in-depth, illustrated tutorials on basic algorithms and data structures. |
★★☆ | Competitive Programming — Commonlounge | Short video tutorials for beginner and intermediate concepts. Advanced tutorials selected from the best ones available on various CP blogs. |
★☆☆ | OLYMPIADS IN INFORMATICS | 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. |
★☆☆ | algolist (Russian) | A Russian website devoted to algorithms of all sorts. Some topics listed on this website seems pretty interesting. |
★★☆ | 演算法筆記 (Algorithm Notes) (Chinese) | One of the most popular tutorial websites among the Taiwanese competitive programming community. The maintainer for this website spends immense efforts on researching algorithms. |
★★☆ | 国家集训队论文 1999-2015 (Papers from Chinese IOI training camps) (Chinese) | Papers from the Chinese IOI training camps. It's interesting for the fact that one can tell different regions emphasize different things. |
Open Courses
Consider beginning your competitive programming journey with these awesome courses!
☆ | Name | Description |
---|---|---|
★★☆ | Code Monk, by HackerEarth | A fantastic step-by-step tutorial on the essential topics in competitive programming. |
★★★ | Stanford CS 97SI: Introduction to Competitive Programming Contests | Offers comprehensive lecture slides and a short list of exercise problems. |
★★☆ | How to Win Coding Competitions: Secrets of Champions | A course by ITMO University on competitive coding on edX. |
★★☆ | Codechef's Indian Programming Camp | 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. |
★★☆ | Reykjavik T-414-ÁFLV: A Competitive Programming Course | An awesome course taught by Bjarki Ágúst Guðmundsson (SuprDewd). These lectures feature neat slides and a nice list of problems to practice. |
★★☆ | NCTU DCP4631: Problem Solving and Programming Techniques | A course on basic topics featuring good lecture slides. |
★☆☆ | Materials (English) from Arabic Competitive Programming Channel | Some materials (slides & source codes) covering a broad range of algorithmic topics |
Open Courses for Algorithms and Data Structures
☆ | Name | Description |
---|---|---|
★★★ | prakhar1989/awesome-courses#algorithms | A fantastic list of open courses offered by notable institutions (MIT, Stanford, UC Berkeley ... etc.). |
★★★ | MIT SMA 5503: Introduction to Algorithms | 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. |
★★☆ | UIUC Algorithm Course | lecture notes, homeworks, exams, and discussion problems covering a broad range of algorithmic topics |
Books
A list of recommended books for competitive programming.
☆ | Name | Description |
---|---|---|
★★☆ | Competitive Programming, 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). |
★★☆ | Programming Challenges: The Programming Contest Training Manual, 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. |
★★☆ | Competitive Programmer's Handbook, by Antti Laaksonen | An introduction to competitive programming for aspiring IOI and ICPC contestants. Free to download (pdf). |
★★☆ | Computational Geometry: Algorithms and Applications, 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. |
★☆☆ | The Hitchhiker’s Guide to the Programming Contests, by Nite Nimajneb | This book is free for download (pdf). This book covers various topics relevant to competitive programming. |
★★★ | プログラミングコンテストチャレンジブック (Japanese), by 秋葉拓哉, 岩田陽一, 北川宜稔 | An absolutely phenomenal book. The contents, organized in a very coherent manner, are nothing short of amazing. ... 培養與鍛鍊程式設計的邏輯腦:世界級程式設計大賽的知識、心得與解題分享 (Chinese Traditional) |
★★☆ | 算法竞赛入门经典 (Chinese), by 刘汝佳 | The Art of Algorithms and Programming Contests (English), 打下好基礎:程式設計與演算法競賽入門經典 (Chinese Traditional) |
★★☆ | 算法竞赛入门经典——训练指南 (Chinese), by 刘汝佳, 陈锋 | 提升程式設計的解題思考力─國際演算法程式設計競賽訓練指南 (Chinese Traditional) |
★★★ | 算法艺术与信息学竞赛 (Chinese), by 刘汝佳, 黄亮 | An old-time classic. It's old but the contents in this book are still considered to be very difficult by today's standards. |
Books for Algorithms
☆ | Name | Description |
---|---|---|
★★★ | Introduction to 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. |
★★☆ | Algorithm Design, 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. |
★★☆ | The Algorithm Design Manual, 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. |
★★★ | Algorithms, 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. |
Books for Mathematics
☆ | Name | Description |
---|---|---|
★★☆ | Discrete Mathematics and Its Applications, 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, Probablity, Graphs, Trees and Boolean Alegra to name but a few. |
★★☆ | Concrete Mathematics: A Foundation for Computer Science, 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. |
★★☆ | Linear Algebra and Its Applications, 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). |
★★☆ | Introduction to Probability, 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). |
★★☆ | How to Solve It: A New Aspect of Mathematical Method, by G. Polya | An old-time classic. In this book, the author provides a systematic way to solve problems creatively. |
Sites for Practice
Good online judge systems / contest platforms to practice.
☆ | Name | Description |
---|---|---|
★★★ | Codeforces | Codeforces is one of, if not, the most popular contest platforms out there. Currently maintained by Saratov State University, it features regular contests and countless awesome original problems. Additionally, every contest provides immediate helpful tutorials (usually) written by the authors themselves. Codeforces also houses a strong and engaging community. All in all, one would indeed learn and improve tremendously here. |
★★★ | Topcoder | Topcoder has been around since 2001. Rich in history, It's considered to be one of the most prestigious organizations when it comes to technology competitions. Hundreds of SRMs gave birth to an abundant problemset. Problems here are typically more challenging than others and Topcoder therefore appeals to many elite programmers. The annual Topcoder Open (TCO) is also a widely-discussed event. |
★★★ | Google Code Jam | 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 | AtCoder is a new but phenomenal contest platform created by a team of highly-rated Japanese competitive programmers. |
★★☆ | CodeChef | CodeChef is a non-profit educational initiative of Directi. It's a global competitive programming platform and has a large community of programmers that helps students and professionals test and improve their coding skills. Its objective is to provide a platform for practice, competition and improvement for both students and professional software developers. Apart from this, it aims to reach out to students while they are young and inculcate a culture of programming in India. |
★★★ | SPOJ | 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 | 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 | 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 | 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. |
★★☆ | UVa | An old-school problem archive / online judge with rich history. Thousands of problems, including many classic ones, are featured here. However, it is strongly advised that you practice with uHunt following its "Competitive Programming Exercise" section. |
★★☆ | HackerRank | 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. |
★★☆ | POJ | POJ is an online judge with many great problems maintained by Peking University. Most Chinese competitive programmers began their journey here. The platform is really dated so mysterious compilation and run-time issues may occur. |
★★☆ | Project Euler | Project Euler features a stunning set of good math problems. It also hosts a forum where people can discuss. |
★☆☆ | Hackerearth | HackerEarth is a startup technology company based in Bangalore, India that provides recruitment solutions. |
★☆☆ | Caribbean Online Judge | COJ is hosted by University of Informatics Sciences (UCI, by its acronym in Spanish), located in Cuba. Feature ACM ICPC and Progresive constest styles, mostly from Caribbean and Latin American problem setters, also has problem classifier and contest calendar. |
★★☆ | CS Academy | New in the competitive programming scene, CS Academy is a growing online judge that hosts competitions once every two weeks. It supports live chat, interactive lessons and an integrated online editor (that actually works). |
★★☆ | Russian Code Cup | 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. |
★★☆ | CodeFights | CodeFights is a website for competitive programming practice and interview preparation. It features daily challenges of varying difficulty, an archive of problems and regular (every 15 minutes) mini-tournaments. Good for beginners. |
Problem Classifiers
Sites classifying programming problems.
Choose a category (eg. DP) of interest and practice problems on that topic.
☆ | Name | Description |
---|---|---|
★★★ | A2 Online Judge | Mixed |
★★★ | Problem Classifier | SPOJ |
★★☆ | UVa Online Judge | CP Book |
★☆☆ | Codeforces Tags | CF (DP) |
★★☆ | HackerRank | HackerRank |
★★☆ | Juniors Training Sheet, by Mostafa Saad Ibrahim | Simple problems for newcomers |
★★☆ | Lucky貓的 UVA(ACM)園地 (Chinese) | UVa |
★★☆ | Topcoder problem archive | List of problems with categories and complexity levels |
Contest Calendars
Calendars for impending programming contests.
(Never miss another contest!)
☆ | Name | Description |
---|---|---|
★★★ | Programming Contest Calendar — HackerRank | Google Calendar export available |
★★☆ | clist.by | API available for use |
★★☆ | Coding Calendar (Android App) | |
★★☆ | Coder's Calendar: Android App, Chrome Extension, Firefox Add-on | |
★★★ | CodeHorizon: iOS App, Android App |
Sites for Questions
These are great sites to ask questions.
Paste your codes at ideone, pastebin or other sites to avoid formatting issues.
☆ | Name | Description |
---|---|---|
★★★ | Codeforces | For quick answers, Codeforces is definitely the go-to place to ask about anything competition-related. |
★★★ | Competitive Programming — Quora | You would typically get more elaborate answers on Quora, but you might not have your questions answered straightaway. |
★★☆ | Theoretical Computer Science Stack Exchange | This place is generally for the academics, so don't ask questions about contest problems here. |
Implementations
Algorithm & Data structure implementations.
☆ | Name | Description |
---|---|---|
★★★ | CodeLibrary, 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. |
★★★ | spaghetti-source/algorithm, by Takanori MAEHARA (@tmaehara) | High-quality implementations of many hard algorithms and data structures. |
★★★ | kth-competitive-programming/kactl, by Simon Lindholm (simonlindholm) et al. | A phenomenally organized, documented and tested team notebook from KTH Royal Institute of Technology. One of the most well-crafted team notebooks (contest libraries) I've ever seen. |
★★☆ | jaehyunp/stanfordacm | Stanford's team notebook is well maintained and the codes within are of high-quality. |
★★☆ | ngthanhtrung23/ACM_Notebook_new, by team RR Watameda (I_love_Hoang_Yen, flashmt, nguyenhungtam) from National University of Singapore | RR Watameda represented National University of Singapore for the 2016 ACM-ICPC World Finals. The items in this notebook are pretty standard and well-organized. |
★★☆ | bobogei81123/bcw_codebook, by team bcw0x1bd2 (darkhh, bobogei81123, step5) from National Taiwan University | bcw0x1bd2 represented National Taiwan University for the 2016 ACM-ICPC World Finals. This notebook contains robust implementations for advanced data structures and algorithms. |
★☆☆ | foreverbell/acm-icpc-cheat-sheet, by foreverbell (foreverbell) | A notebook with some advanced data structures and algorithms including some from the China informatics scene. |
★☆☆ | igor's code archive, by Igor Naverniouk (Abednego) | A good notebook by Igor Naverniouk who is currently a software engineer at Google and part of the Google Code Jam team. |
Language Specifics
Languages and other miscellaneous knowledge.
C/C++
☆ | Name | Description |
---|---|---|
★★☆ | Power up C++ with the Standard Template Library — Topcoder: Part 1, Part 2 | An introductory tutorial on basic C++ STLs. |
★★☆ | Yet again on C++ input/output — Codeforces | Learn more about C++ I/O optimizations. |
★★☆ | C++ Tricks — Codeforces ... What are some cool C++ tricks to use in a programming contest? — Quora | Plentiful C++ tricks for competitive programming. Note that some should be used with care. |
★★★ | C++ STL: Policy based data structures — Codeforces: Part 1, Part 2 | Detailed introduction to the extra data structures implemented in GNU C++. The official documentation can be found here. |
★☆☆ | C++11 FAQ (English, Chinese, Russian, Japanese, Korean) | A list of FAQs regarding C++11 collected and written by Bjarne Stroustrup, the creator of C++. |
Java
☆ | Name | Description |
---|---|---|
★★☆ | How to read input in Java — tutorial — Codeforces | Learn how to read input faster. This is a must-read for those who intend to use Java for competitive programming |
★★☆ | How to sort arrays in Java and avoid TLE — Codeforces | Some tips on how to avoid hitting the worst case of quick sort |
★★☆ | BigNum arithmetic in Java — Let's outperform BigInteger! — Codeforces | A basic but faster custom BigInteger class |
★★☆ | EZ Collections, EZ Life (new Java library for contests) — Codeforces | A Java library for contests written by Alexey Dergunov (dalex). ArrayList, ArrayDeque, Heap, Sort, HashSet, HashMap, TreeSet, TreeMap, TreeList and pair classes are implemented |
Miscellaneous
☆ | Name | Description |
---|---|---|
★★★ | Bit Twiddling Hacks | A huge compiled list of bit manipulation tricks. |
★★★ | Comparing Floating Point Numbers, 2012 Edition — Random ASCII | Everything you need to know about floating point numbers. A must read especially for geometry topics. |
★★☆ | Object-Oriented C Style Languages: C++, Objective-C, Java, C# — a side-by-side reference sheet | A detailed side-by-side reference sheet for common syntaxes. |
Tools
Awesome tools that will make your life easier.
IDEs
☆ | Name | Platform | Description |
---|---|---|---|
★★★ | Vim | 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. |
★★★ | Emacs | 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. |
★★★ | Far Manager | 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. |
★★★ | Code::Blocks | 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. |
★★★ | IntelliJ IDEA | 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. |
★★☆ | Sublime Text | 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! |
★★☆ | Eclipse | GUI / Cross-Platform | Eclipse is another good IDE for Java. It's an okay alternative to Intellij IDEA (A tad inferior to IDEA by today's standards). Sometimes contests only provide Eclipse for some reason, so this might be a good incentive to try and use Eclipse. |
★★☆ | CLion | 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. |
★☆☆ | Other IDEs | Mixed | Visual Studio is the IDE to use in case you want to code in C#. ... Both Atom and Visual Studio Code are built with Electron (written in JavaScript) and therefore somewhat resource-hogging. ... CodeLite is a newly rising IDE. Beware that the load-up and project-creation times can be extraordinary. |
Personal use
☆ | Name | Description |
---|---|---|
★★★ | VisuAlgo | A website featuring a large collection of visualization tools for algorithms and data structures. |
★★★ | General Practice Helpers: ... CHelper (IntelliJ IDEA) (manual) ... caide (Visual Studio, CodeLite) ... JHelper (AppCode, CLion) | 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. |
★★☆ | Codeforces Parsers: ... Codeforces Parser ... GoCF ... cfparser (emacs) | These tools parse Codeforces contest problems and help run sample tests. |
★★★ | The On-Line Encyclopedia of Integer Sequences (OEIS) | 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. |
★★☆ | Syntax Highlighters: ... tohtml.com ... markup.su ... 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! |
★★☆ | Code Sharing: ... Ideone.com ... 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. |
★★☆ | Ineffable | A simple command-line grader for local grading. |
★★☆ | uDebug | A platform that provides expected outputs for user-specified inputs to problems on the UVa Online Judge. Some problems also provide additional test cases for debugging. |
Contest Preparation
☆ | Name | Description |
---|---|---|
★★★ | polygon | polygon provides a platform and a rich set of tools for professional contest preparation. ... An example: Validators with testlib.h — Codeforces |
★★☆ | Graph Editor | A fantasic tool to create and visualize graphs. |
★★☆ | tcframe | A C++ framework for generating test cases of competitive programming problems. |
★★★ | Virtual Judge (vjudge) | Virtual Judge (vjudge) allows users to create virtual contests with problems from notable problem archives. |
★★☆ | BNU Online Judge | BNU Online Judge also allows users to create virtual contests. |
★★☆ | Kattis | Kattis assists in contest preparation (E-mail them for assistance). |
Community
Meet the god-like competitive programmers!
Learn helpful tips, tutorials and insights from these people :)
Blogs
Name (Handle) | Blog Name |
---|---|
Codeforces blogs | |
Petr Mitrichev (Petr) | Algorithms Weekly |
Makoto Soejima (rng_58) | rng_58's blog |
Bruce Merry (bmerry) | Entropy always increases |
Przemysław Dębiak (Psyho) | Psyho's blog |
Anudeep Nekkanti (anudeep2011) | Namespace Anudeep ;) |
vexorian (vexorian) | vexorian's blog |
Ashar Fuadi (fushar) | Fushar's blog |
LiJie Chen (YuukaKazami) | WJMZBMR (Chinese) |
Huang I-Wen (dreamoon_love_AA, dreamoon) | 小月的耍廢日誌 (Chinese) |
Shiang-Yun Yang (morris1028) | Morris' Blog (Chinese) |
Yuhao Du (jqdai0815, TooSimple, xudyh) | xudyh (Chinese) |
Youtube and Livestreams
Name (Handle) | Link |
---|---|
Petr Mitrichev (Petr) | Youtube |
Gate Lectures by Ravindrababu Ravula | Youtube |
Mostafa Saad Ibrahim (mostafa.saad.fci) | Competitive Programming Youtube (Arabic Speech-English Text) |
Tushar Roy | Youtube, with many tutorial videos. |
GeeksforGeeks | Youtube |
Algorithms Live! | Youtube |
CodeChef | Youtube |
HackerRank | Youtube |
IDeserve | Youtube |
code_report | Youtube, with contest updates and problem tutorials of HackerRank, LeetCode, Topcoder and Codeforces. |
"Sothe" the Algorithm Wolf | Youtube |
Egor Kulikov (Egor) | Youtube |
Adam Bardashevich (subscriber) | Youtube |
Bohdan Pryshchenko (I_love_Tanya_Romanova) | Twitch, Youtube |
Vladimir Smykalov (enot110) | Twitch, Youtube |
Aleksandar Abas (Alex7) | Youtube |
Quora
Visit Competitive Programming — Quora (Top 10 Most Viewed Writers).
Important Community Figures | Description |
---|---|
Bill Poucher | Executive Director of ACM-ICPC. CS Professor at Baylor University. |
Michal Forišek (misof) | Organizer of IPSC and IOI. CS Teacher at Comenius University in Slovakia. Algorithm and CS Education Researcher. Former highly-rated competitive programmer. |
Ahmed Aly (ahmed_aly) | Founder of A2OJ. HackerRank Lead Software Engineer. Former member of the Google Code Jam team. |
Other Awesome Resources
Articles
Informative and helpful articles
Subject |
---|
Overview of Programming Contests, by Przemysław Dębiak (Psyho, Psyho) |
The 'science' of training in competitive programming — Codeforces, by Thanh Trung Nguyen (I_love_Hoang_Yen) |
If you ask me how to improve your algorithm competition skill, I will give you the link of this blog. — Codeforces, by Huang I-Wen (dreamoon, dreamoon_love_AA) |
How to prepare for ACM — ICPC? — GeeksforGeeks, by Vishwesh Shrimali |
Complete reference to competitive programming — HackerEarth, by Ravi Ojha |
Getting started with the sport of competitive programming — HackerEarth, by Triveni Mahatha |
FAQs
Fine answers to frequently-asked questions
Awesome Lists
Relevant awesome lists
Name | Link |
---|---|
C++ Books | The Definitive C++ Book Guide and List — Stack Overflow |
Java Books | What are the best books to learn Java? — Quora |
Advanced Java Books | What is the best book for advanced Java programming? — Quora |
Algorithms | tayllan/awesome-algorithms |
Algorithm Visualization | enjalot/algovis |
Math | rossant/awesome-math |
C++ | fffaraz/awesome-cpp |
Java | akullpp/awesome-java |
Courses | prakhar1989/awesome-courses |
Free Programming Books | vhf/free-programming-books |
Community-curated C++ Resources | Hackr.io |
Interview Questions
Name | Description |
---|---|
CareerCup | The most popular website for software engineering interview preparation. |
InterviewBit | Features intriguing and refreshing game-play designs which are designed to invoke one's interest in practicing. |
Awesome Interviews | A curated list of awesome interview questions |
License
Awesome Competitive Programming is licensed under a Creative Commons Attribution 4.0 International License.
Nice :)
I think i won't need anything else :D , Thank you very much.
You can also add https://www.quora.com/profile/Bohdan-Pryshchenko( I_love_Tanya_Romanova ) to your Quora list.
Bohdan Pryshchenko :)
Thanks :)
Also added yeputons's Quora profile.
You may check list of most viewed writers in topic "Competitive Programming" — there are quite a few other experienced guys who write nice answers (Mimino, jonathanpaulson etc.).
Or you may simply use that list itself as a good link :)
Good idea, there are too many great people to name :)
I love Tanya too, so lets devide her!
I am honored to be on the Quora list :) Very nicely done and organized!
A similar list already exists under the awesome listing:
https://github.com/hkirat/awesome-competitive-coding
http://codeforces.net/blog/entry/21182
Most lists I found classify their contents by problem types. (ie. The entries in the list of lists section)
The list I created is meant to be a semi-complete list that covers different aspects on a grander scale.
It's actually significantly different :)
Thanks for the link!
You can put these two under appropriate sections. http://e-maxx.ru/algo/ http://shygypsy.com/tools/
Thanks!
I have E-Maxx up there already :) (I place it higher now)
I've added igor's code archive to the list,
and shortened the Chinese IOI paper link so that the CF markdown interpreter would work correctly :)
Thank you :) it's very helpful.
Np :)
Glad to hear that.
Feel free to contribute if you know any site that's not on the list.
I sincerely feel that there's plenty to be improved about this list :)
Hey lnishan this is a wonderful blog :)
You have put a lot of effort and this will be a helpful resources for most of us :) .
I can't thank you enough for your effort :)
I use the CodeHorizon Android app. Personally, I think it's the best because the UI is really nice and it allows me to set a notification x hours before the contest for a given site, which is really convenient.
Thank you :)
Added.
Recently this book was published (Data Structure Practice: for Collegiate Programming Contests and Education) https://www.crcpress.com/Data-Structure-Practice-for-Collegiate-Programming-Contests-and-Education/Wu-Wang/9781482215397
It is a translated version from Chinese acording to http://www3.cs.stonybrook.edu/~rezaul/Spring-2015/CSE548/Yonghui-Wu/Yonghui-Wu-books.pdf
I have some of Prof. Wu's books.
I've even taken a summer training course from him back in 2014.
Frankly speaking, they are not good. It doesn't seem like the professor truly understands the materials. Almost everything (definitions, tutorials, problem editorials) was poorly written. The books cover absolute nothing about the ideas/thought processes. Everything was like "Declare an array/ds with key = X, value = Y. Then you do this ... and you do that. Finally this is the answer."
Great !!!
Here is another List with java books you can add
Thanks for the recommendation!
I'll take a look. Here is a collection of good C/C++ books by StackOverflow members.
I think I'll add both of them to the list.
This is the one stop for all. Exactly what I've been looking for.
Glad to hear that. Comments like yours made my efforts worthwhile.
Best wishes to your competitive programming journey :D
It's definitely worth it and maybe even more :)
Anyway, thanks and keep helping and inspiring other budding Programmers! :)
Is POJ still a good place for preparation (worth ★★★)? I solved 1000+ problem there about 5 years ago, and I felt the judge environment was so old that we must optimize source codes very much (and they don't use -O2 compiler option).
Now, after 5 years, it doesn't seem the judge server is updated, and the number of submissions there is becoming significantly decreased. I don't know about the popularity of this website among Chinese coders, but most Japanese users have been retired using this online judge in these 4-5 years (although they don't retire from programming contest).
They have great problem there, such as USACO problems or POJ Monthly problems, but I don't disagree that even those great problems are getting out of date and the distraction is larger than many up-to-date contest websites (such as Codeforces, topcoder, or AtCoder (Japanese contest service, AtCoder ) ).
Apart from that, I have unforgettable memories about POJ. Nice job for taking me to higher level.
First and foremost, Thank you!
This is exactly the kind of feedback I'm hoping for :)
Well, I'm not exactly sure. I actually gave it 2 stars initially precisely for the reason you stated in your comment. But then I decided to give it a 3-star rating because of the large amount of classic problems on there. IIRC, Johnny Ho (IOI 2012 Perfect Scorer) said that he practiced primarily on POJ. This also contributed to decision.
In the Taiwanese community these days, from what I've heard, people practice on local online judges (such as HSNU OJ, sprout, TIOJ ... etc.) in addition to CF and topcoder. I think our current situation is kind of similar to yours (Japanese community) by your description :)
Woooooow , this is really the complete reference for competitive programming *_*
At least my take on it :P
(It started off as a simple compilation of my browser bookmarks :P )
I still have many ideas to improve on the current list!
Good luck to you as well :)
Hey can you tell me how to print codes from github on paper.There is no option to download it in pdf also the code orientation becomes bad on copying to MS-WORD for printing. Any suggestions.
Hello there :)
Since you mentioned MS-Word, I would suggest you to try an online syntax highlighter. This is my solution for making slides with code snippets.
Paste your source code on the website,
and copy-and-paste the converted, formatted source code back to MS-Word.
Since MS-Word retains formatting, the outcome would look pretty nice :)
I'm not aware of a better solution. Would highly appreciate if there's any :)
PS. If this is for your team notebook, you may also use latex — a clever solution refined by my ex-teammate pwliao. Link to our notebook repo
how can we make make automatic verification of sample test cases after compilation of code in IDE ? I saw it in screencast of Petr .
I think that would be CHelper.
Check the Tools section.
I haven't tried it myself though.
In case you have any issues, ask Egor, the author of CHelper.
Can i use CHelper outside Codeforces too, Like on TopCoder ?
CHelper supports multiple platforms. TopCoder is supported I believe.
Great work! Thanks a lot :)
You can add careercup for interview questions
Thank you!
Added :)
I'm still relatively unfamiliar with interview questions.
Did 2 Facebook interviews last year, but I didn't do very well :(
OMG!!! Great contribution, like it and love it :) . Thx a lot....
You can add www.interviewbit.com for interview questions/preparation.
Hello, Thanks first of all.
Can you tell me how you would recommend it?
(Sorry, I don't know these sites well enough)
Maybe 4 out of 5. It has great database of questions asked in interviews and there tutorials/solutions are very elaborate.Plus they have classified the problems of different domain very well.
Sorry for the late reply.
I've been pretty busy recently (doing 2 jobs atm).
It looked great I think.
I checked out a few of the problems.
I have a question: Is it being actively maintained? (eg. new problems every now and then?)
Yes. Guys who developed it are quite active.
I can not say much about whether new problems are added regularly because of my limited usage of this website (3~4 months). But they seems to be very responsive to user's comments and suggestions.
Hi!
please add this book for graph theory!
Introduction to Graph Theory Douglas B.West
Please also include Interviewbit under interview questions / online sites to practice.
Maybe not in the sites to practice,
because I think interview questions are quite different.
(This list is for competitive programming for the most part)
I'm sorry. I do intend on including it.
I just haven't gotten around to explore this site.
I think, In the blog section you should also add I, ME AND MYSELF !!!.... a blog by Zobayer Hasan. thnx.
Hello. Thanks for the suggestion.
Can you tell me a bit more about him?
EVERYBODY IS THE PERFECT!
COOL!
U can also add ahmed_aly
A2OJ founder BTW
https://www.quora.com/profile/Ahmed-Aly
I actually stumbled upon his profile a while ago,
and he didn't have many answers back then :P
Thanks,
I'll place him on the list.
Thanks EbraM96!
Great effort!
I have a channel for competitve programming, mainly for Arabian speakers. However, all text is in English.
https://www.youtube.com/user/nobody123497
I was just about putting your Channel Doctor:mostafa.saad.fci :D
Thanks :) I submitted on the github a request to add it there
You can also add Tushar Roy to YouTube list. :]
Yes. His tutorials are really helpful.
Thanks, added.
Sorry, it's been busy for me recently.
very nice
geeksforgeeks is up there, 3rd item in the first section.
The website of Spaghetti Source is no not updated, but Spaghetti Source is still being updated now in github. https://github.com/spaghetti-source/algorithm
Thank you!
I'll replace the link to the website with this one :)
The items are significantly harder too o.o
http://codeforces.net/blog/entry/43230 https://github.com/EvgenyKarkan/EKAlgorithms https://github.com/lucasviola/competitive-programming-resources https://github.com/palcu/algo https://github.com/suuuzi/Competitive-Programming add these too..
Hello,
Thank you. I appreciate the effort.
However, I don't think any of these are qualified for the list.
They are all well-organized, but too simple (only cover basic stuff).
Great effort. Thank you very much... :)
Thanks for the kind words :)
It's been a year since I launched this project.
Time flies!
Can you add some more resources related to computational geometry helpful for ICPC? Thanks for this awesome collection.
I would love to, but I have rather limited knowledge when it comes to Computational Geometry.
You should be able to find some relevant resources on the listed websites, but other than that, I'm afraid that I am a bit on the ignorant side when it comes to CG :/
Could add this book written in spanish to the list?
Original Title: Introducción en C++ a la Programación Competitiva
English Title: Introduction to Competitive Programming in C++
http://olimpiada.icpc-bolivia.edu.bo/sites/default/files/Introduccion%20en%20C++%20a%20la%20Programacion%20Competitiva.pdf
This does look like a good book.
Can you give us an introduction for the book?
I'm sorry that I do not understand Spanish, nor am I familiar with the Spanish-speaking competitive programming community.
this is too overwhelming! where do I start?
I admit that it's a little overwhelming :P
That said, there are also overwhelmingly many ways you can start!
if you don't have a clue, I would suggest that you start with an open course :)
Discrete Mathematics and Its Applications, by Kenneth H. Rosen : http://www2.fiit.stuba.sk/~kvasnicka/Mathematics%20for%20Informatics/Rosen_Discrete_Mathematics_and_Its_Applications_7th_Edition.pdf
KTH ACM ICPC Team notebook
Wow! Their notebook looks awesome!
I'll add that to the list when I get off work today.
How dare you. I demand "how to solve it" and "concrete mathematics" be upgraded to 3 stars.
Well, I would love to, but I need an authoritative review of those books because I have not read these books entirely.
Would you be kind enough to share your thoughts?
thank you very very much, it's very helpful for me.
You're very, very welcome! Glad it's helpful for you :)
I apologize for being not as responsive lately.
I'll get back to you when I have time, and ping me if I don't.
Also, I'm so sorry that I cannot provide individual assistance.
I've been quite busy and I don't think I'm the right person to ask for help (I'm blue you see).
Hi! Awesome list! Can we add BaseCS as a resource for data structures and computer science basics?
https://medium.com/basecs
Yes! :)
Your blog looks amazing.
Does anyone have access to the Chinese IOI papers at http://download.csdn.net/album/detail/657? I've tried to open an account to download, including using external websites like WeChat and GitHub and Baidu to link, but CSDN still requires verification of a mainland Chinese phone (this seems to be 2015 policy).
That's interesting, because I was able to download those documents last year.
It was actually one of the more accessible download locations I could manage to find.
I'll probably end up removing it, because it is a little controversial.
Maybe Kaggle should be added to the list.
If we include data science competitions, I think there will be a lot to be added.
I think it would be better to leave those for ML resource collections.
Would you like to make a seperate thread for data science competitions ? It would be heplful to me.
Please add LeetCode to the InterView Questions part.
Yeah LeetCode should probably be in there :)
found it as too much helpful resource..thanks :D
Really very helpful and probably the most exhaustive lists for competitive programming I have seen so far. Thanks a lot!
It would be better for me , if you also provide some cool stuff for python . If anyone has such cool stuff for python...plzz provide link its a humble request to all
this is very good for me . thank you .
[user:Inishan] Please add Errichto 's channel on youtube.
https://www.youtube.com/channel/UCBr_Fu6q9iHYQCh13jmpbrg
This topcoder page is also very helpful.
I would like to recommend this repository: Inzva Algorithm Programme
Thanks a lot
Is the English version of this book available please?
Is anyone able to access the papers from the Chinese IOI training camps in the list above? (http://download.csdn.net/album/detail/657/1/1)
I get a 404 error when I try to open the zip files from different years.
Cool.