Are you confident in your coding skills?
Do you want to be able to solve complex problems in limited time and under constant pressure?
Have you ever heard of Chinese Remainder Theorem, Aho-Corasick or other nerdy-cool things?
Can you crack technical interviews without much preparations at any time?
Anyway, there are many reasons to participate in competitive programming.
If you've ever wanted to start, this post may be useful to you.
IOI (International Olympiad in Informatics) is probably the most prestigious competition for school students,
and ACM ICPC (International Collegiate Programming Contest) - for university students.
There are also contests like Google Code Jam, Facebook Hacker Cup and others, that accept even 'adult' programmers.
All of them have their own rules and specifics, but the general preparation template is almost the same everywhere.
You need to know the basics of a programming language, learn some solving techniques, algorithms and data structures,
oh and gain some experience in online judges and problem archives.
And here's a list of some helpful resources you may find useful.
- Online Judges, Problemsets, Contests
- Codeforces: "codeforces.com"
- Timus: "acm.timus.ru"
- Saratov State University: "acm.sgu.ru"
- Sphere Online Judge: "spoj.com"
- Moscow Institute of Physics and Technology: "acm.mipt.ru"
- UVa Online Judge: "uva.onlinejudge.org"
- URI Online Judge: "urionlinejudge.com"
- A2 Online Judge: "a2oj.com"
- Panda Online Judge: "pandaoj.com"
- Algorithms, theory
-
E-Maxx (Ru):
"e-maxx.ru"
More than 140 algorithms in varioius categories (Math, Geometry, Graphs etc) -
E-Maxx (En):
"e-maxx-eng.appspot.com"
English translation of the above website. - TopCoder: "Data Science Tutorials"
- PEG WIKI: "Algorithms"
- Geeks for Geeks: "Fundamentals of Algorithms"
- USA Computing Olympiad: "usaco.org"
- CLRS: "Introduction to Algorithms, 3rd Edition"
-
E-Maxx (Ru):
"e-maxx.ru"
- Courses:
- HackerEarth: "Code Monk"
- edX: "How to Win Coding Competitions: Secrets of Champions"
- MIT Open Courseware: "Introduction to Algorithms (prof. C.Leiserson)"
- Stanford: "CS 97SI: Introduction to Programming Contests"
- Lists:
- IOI: "Official Syllabus"
- Geeks for Geeks: "How to prepare for ACM ICPC"
- Hackerrank: "Programming Contest Calendar"
-
Codeforces:
"Awesome Competitive Programming"
Wonderful list of resources, partly used as a source for this article.