Recent from talks
Contribute something
Nothing was collected or created yet.
Competitive programming
View on Wikipedia

Competitive programming or sport programming is a mind sport involving participants trying to program according to provided specifications. The contests are usually held over the Internet or a local network. Competitive programming is recognized and supported by several multinational software and Internet companies, such as Google[1][2] and Meta.[3]
A programming competition generally involves the host presenting a set of logical or mathematical problems, also known as puzzles or challenges, to the contestants (who can vary in number from tens or even hundreds to several thousand). Contestants are required to write computer programs capable of solving these problems. Judging is based mostly upon number of problems solved and time spent on writing successful solutions, but may also include other factors (quality of output produced, execution time, memory usage, program size, etc.).
History
[edit]One of the oldest contests known is the International Collegiate Programming Contest (ICPC) which originated in the 1970s[4] and has grown to include 88 countries in its 2011 edition.
From 1990 to 1994, Owen Astrachan, Vivek Khera and David Kotz ran one of the first distributed, internet-based programming contests inspired by the ICPC.[5]
Interest in competitive programming has grown extensively since 2000 to tens of thousands of participants (see Notable competitions), and is strongly connected to the growth of the Internet, which facilitates holding international contests online, eliminating geographical problems.
Overview
[edit]The aim of competitive programming is to write computer programs which are able to solve given problems. A vast majority of problems appearing in programming contests are mathematical or logical in nature. Typical such tasks belong to one of the following categories: combinatorics, number theory, graph theory, algorithmic game theory, computational geometry, string analysis, discrete mathematics and data structures.[6] Problems related to constraint programming and artificial intelligence are also popular in certain competitions.
Irrespective of the problem category, the process of solving a problem can be divided into two broad steps: constructing an efficient algorithm, and implementing the algorithm in a suitable programming language (the set of programming languages allowed varies from contest to contest). These are the two most commonly tested skills in programming competitions.
In most contests, the judging is done automatically by host machines, commonly known as judges. Every solution submitted by a contestant is run on the judge against a set of (usually secret) test cases. Normally, contest problems have an all-or-none marking system, meaning that a solution is "Accepted" only if it produces satisfactory results on all test cases run by the judge, and is rejected otherwise. However, some contest problems may allow for partial scoring, depending on the number of test cases passed, the quality of the results, or some other specified criteria. Some other contests only require that the contestant submit the output corresponding to given input data, in which case the judge only has to analyze the submitted output data.
Online judges are online environments in which testing takes place. Online judges have rank lists showing users with the biggest number of accepted solutions and/or shortest execution time for a particular problem.[7]
Notable competitions
[edit]Algorithm competitions
[edit]| Name of the competition[8] | Organizers | Audience | Description | Number of participants |
|---|---|---|---|---|
| Google Code Jam (GCJ) | open | Annual competition organized and sponsored by Google from 2003 until its cancellation in 2023.[9] | 32,702 (2022)[10] | |
| International Collegiate Programming Contest (ICPC)[11] | ICPC Foundation | university students | Team competition for university students, the contest consists of many regional rounds that conclude in a world final organized yearly. Teams consist of three students from the same university and they are allowed to use only one computer.[12] | 50,000+ (2022)[13] |
| International Olympiad in Informatics (IOI) | IOI | Pre-University Students | International competition for secondary school students. Organized yearly since 1989. Each country can send at most 4 participants to compete. | 349 from 88 countries (2022)[14] |
| Meta Hacker Cup (formerly Facebook Hacker Cup) | Meta Platforms | open | Annual competition held since 2011. Organized and sponsored by Meta (formerly Facebook). | 27,604 (2022)[15] |
| Topcoder Open (TCO) | Topcoder | open | Annual algorithm competition held from 2001 until its cancellation in 2023[16] |
In most of the above competitions, competitions are usually organized in several rounds. They usually start with online rounds, which conclude in the onsite final round. The top performers at IOI and ICPC receive gold, silver and bronze medals. In the other contests, cash prizes are awarded to the top finishers. The competitions also attract the interest of recruiters from multiple software and Internet companies, which often reach out to competitors with potential job offers.
Artificial intelligence and machine learning
[edit]- List may be incomplete
| Name | Main Organizers | Description | Status |
|---|---|---|---|
| Kaggle | Data science, machine learning and mathematical optimization competition platform and online community. | Active | |
| AI Challenge | University of Waterloo | International artificial intelligence programming contest that ran from 2009 to 2011. | Inactive |
| Halite AI Programming Competition | Two Sigma, Cornell Tech | Computer programming contest where participants build bots in desired programming language to compete on a two-dimensional battlefield. | Unknown |
| Russian AI Cup | Mail.Ru Group, My.com | Annual artificial intelligence programming contest. | Unknown |
Contests focusing on open-source technologies
[edit]- List may be incomplete
| Contest Name | Main Sponsor | Description | Running Since | Usual Time | Next Application Cycle | Status |
|---|---|---|---|---|---|---|
| Multi-Agent Programming Contest | Clausthal University of Technology in conjunction with agent-oriented workshops | Annual international programming competition to stimulate research in the area of multi-agent system development and programming. | 2005 | Sept | Sept 2011 | Active |
| Google Summer of Code | Google Inc. | An annual program in which Google awards stipends to hundreds of students who successfully complete a requested free software/open-source coding project during the summer. | 2005 | Mar-Aug | Mar 23- Apr 3 | Active |
| Google Highly Open Participation Contest | Google Inc. | A contest run by Google in 2007–8 aimed at high school students. The contest is designed to encourage high school students to participate in open-source projects. | 2007 | Nov-Feb | Unknown | Unknown |
Online platforms
[edit]The programming community around the world has created and maintained several internet-resources dedicated to competitive programming. They offer standalone contests with or without minor prizes. Users will typically be assigned a rating based on their performance on said contests. The archives of past problems are popular resources for training in competitive programming. There are several organizations that host programming competitions on a regular basis. These include:
| Name | Description |
|---|---|
| Advent of Code | An annual programming competition taking place during Advent, with a new pair of puzzles released each day, up to and including Christmas Day. The second problem of each day is locked until the completion of the first part, and usually follows on from it logically. There are both global and private leaderboards for each year, where rankings are based on who solves the problem first. |
| CodeChef[17][18] | Maintained by Unacademy, it hosts a 3-day-long contest and a couple of short contests every month (one IOI styled called Lunchtime and another ICPC styled called Cook-Off), and provides a contest hosting platform to educational institutions for free. The top two winners of the long contest win cash prizes while the top 10 global get a t-shirt. |
| Codeforces[19][17] | Russian platform, maintained by ITMO University, which provides frequent (up to two per week) 2–3 hour contests (available in English and Russian). Users can also participate on contests published by other users on the "gym" section, submit additional test cases to "hack" submissions from other competitors during contests, write blogs to share techniques with one another and see the source code for the solutions from other users. Contestants that achieve a high enough rating may be granted additional features like being able to add tags to problems and propose problem sets to official contests. |
| CodinGame | Puzzles (increasing difficulty), code golf. Hosts regular online competitions (coding games and programming challenges). |
| Codewars | A community-driven platform with in Online integrated development environment where users solve kata—small coding challenges—in a wide variety of languages. Users earn ranks and honor as they complete challenges and create new ones. Emphasizes learning through practice and peer review, with solutions and discussions available after each challenge is completed. |
| HackerEarth[17] | Bangalore, India based company providing an online contest like environment aiming at providing recruitment assessment solutions. |
| HackerRank | HackerRank offers programming problems in different domains of Computer Science. It also hosts annual Codesprints which help connect the coders and Silicon Valley startups. |
| LeetCode | LeetCode has over 2,300 questions covering many different programming concepts and offers weekly and bi-weekly contests. The programming tasks are offered in English and Chinese. |
| Project Euler[18] | Large collection of computational math problems (i.e. not directly related to programming but often requiring programming skills for solving). Different from other online judges, source code is not necessary to submit solutions. Instead, each problem just requires a numerical answer (which is normally too large to guess or calculate by hand), allowing users to use any methods they see fit for solving the problems, including whether or not to choose a programming language. |
| SPOJ[17] | Polish online judge system which provides a lot of problems for training, and provides a platform for other organizers to host their programming contests. |
| Topcoder[19][17] | US resource and company, which organizes contests and also provides industrial problems as a kind of free-lance job; it offers dozens of short contests and several long ("marathons") every year. Specific feature - participants have a chance to check the correctness of other contestants' solutions after the coding phase and before final automatic testing (so-called "challenge phase"). |
| UVa Online Judge[19][17] | Contains over 4,500 problems for practising. Hosts regular online competitions. Opened in 1995, it is one of the oldest such websites. |
Benefits and criticism
[edit]Participation in programming contests may increase student enthusiasm for computer science studies. The skills acquired in ICPC-like programming contests also improve career prospects, as they help to pass the "technical interviews", which often require candidates to solve complex programming and algorithmic problems on the spot.[19][20]
There has also been criticism of competitive programming, particularly from professional software developers.[21] One critical point is that many fast-paced programming contests teach competitors bad programming habits and code style (like unnecessary use of macros, lack of OOP abstraction and comments, use of short variable names, etc.).[22][21] Also, by offering only small algorithmic puzzles with relatively short solutions, programming contests like ICPC and IOI do not necessarily teach good software engineering skills and practices, as real software projects typically have many thousands of lines of code and are developed by large teams over long periods of time.[21] Peter Norvig stated that based on the available data, being a winner of programming contests correlated negatively with a programmer's performance at their job at Google (even though contest winners had higher chances of getting hired).[23] Norvig later stated that this correlation was observed on a small data set, but that it could not be confirmed after examining a larger data set.[24][unreliable source?]
Another sentiment is that rather than spending time on excessive competing by solving problems with known solutions, high-profile programmers should instead invest their time in solving real-world problems.[21]
Literature
[edit]- Halim, S., Halim, F. (2013). Competitive Programming 3: The New Lower Bound of Programming Contests. Lulu.
- Laaksonen, A. (2017). Guide to Competitive Programming (Undergraduate Topics in Computer Science). Cham: Springer International Publishing.
- Xu, X. (2020) The development, prosperity and decline of Olympic in Informatics. Published online.
- Kostka, B. (2021). Sports programming in practice. University of Wrocław.
See also
[edit]References
[edit]- ^ "Google Code Jam". google.com. Archived from the original on May 31, 2023. Retrieved February 20, 2016.
- ^ "TCO12 Sponsor: Google - TCO 12". topcoder.com. Archived from the original on February 16, 2012.
- ^ "Facebook Hacker Cup". Facebook. Retrieved February 20, 2016.
- ^ Li, Yujia; Choi, David; Chung, Junyoung; Kushman, Nate; Schrittwieser, Julian; Leblond, Rémi; Eccles, Tom; Keeling, James; Gimeno, Felix; Lago, Agustin Dal; Hubert, Thomas; Choy, Peter; d'Autume, Cyprien de Masson; Babuschkin, Igor; Chen, Xinyun (December 9, 2022). "Competition-Level Code Generation with AlphaCode". Science. 378 (6624): 1092–1097. arXiv:2203.07814. Bibcode:2022Sci...378.1092L. doi:10.1126/science.abq1158. ISSN 0036-8075. PMID 36480631.
- ^ Khera, Vivek; Astrachan, Owen; Kotz, David (1993). "The internet programming contest" (PDF). ACM SIGCSE Bulletin. 25 (1): 48–52. doi:10.1145/169073.169105. ISSN 0097-8418. Archived from the original (PDF) on August 8, 2017. Retrieved March 10, 2020.
- ^ Pak, Igor. "Algorithms". Math 182. University of California, Los Angeles. Retrieved March 31, 2024.
- ^ Programming Challenges (Skiena & Revilla) ISBN 0387001638, ISBN 978-0387001630
- ^ Kostka, Bartosz (2021). Sports Programming in Practice (PDF). University of Wrocław.
- ^ "Celebrate Google's Coding Competitions with a final round of programming fun". Google Developers Blog. Google. Retrieved February 28, 2023.
- ^ "Code Jam - Google's Coding Competitions". Coding Competitions. Archived from the original on June 27, 2023. Retrieved February 26, 2023.
- ^ "ICPC". icpc.global. Retrieved February 26, 2023.
- ^ "Programming Environment – ICPC Documents". Retrieved February 15, 2024.
- ^ "ICPC". icpc.global. Retrieved February 26, 2023.
- ^ "Olympiads". stats.ioinformatics.org. Retrieved February 26, 2023.
- ^ "Meta Hacker Cup - 2022 - Qualification Round". www.facebook.com. Retrieved February 26, 2023.
- ^ "FAQ - Topcoder Community Town Hall with Doug Hanson, Topcoder CEO". Topcoder. Retrieved February 28, 2023.
- ^ a b c d e f Luigi, William Di; Farina, Gabriele; Laura, Luigi; Nanni, Umberto; Temperini, Marco; Versari, Luca (2016). "oii-web: an Interactive Online Programming oii-web: an Interactive Online Programming Contest Training System" (PDF). Olympiads in Informatics. 10: 207–222. doi:10.15388/ioi.2016.13. S2CID 6877554.
- ^ a b Combéfis, Sébastien; Wautelet, Jérémy (2014). "Programming Trainings and Informatics Teaching Through Online Contests" (PDF). Olympiads in Informatics. 8: 21–34.
- ^ a b c d Bloomfield, Aaron; Sotomayor, Borja. "A Programming Contest Strategy Guide" (PDF). SIGCSE '16: Proceedings of the 47th ACM Technical Symposium on Computing Science Education.
- ^ Jackson, Dean (December 1, 2013). "The Google Technical Interview. How to Get Your Dream Job" (PDF). XRDS: Crossroads, the ACM Magazine for Students. 20 (2): 12–14. doi:10.1145/2539270. S2CID 27549057.
- ^ a b c d Smith, Duncan (December 2, 2015). "The Competitive Programming Debate".
- ^ Halim, Steven. "CS3233 - Competitive Programming". NUS School of Computing.
- ^ "Winning at programming competitions is a negative factor for being good on the job". YouTube. April 5, 2015.
- ^ "HN discussion on correlation between job performance and competitive programming". December 2020.
Competitive programming
View on GrokipediaFundamentals
Definition and Objectives
Competitive programming is an intellectual sport and mind sport in which participants solve well-defined algorithmic and computational problems under strict time constraints, typically by writing and implementing code in programming languages such as C++, Python, or Java.[8][9] It emphasizes the design of efficient algorithms and their correct implementation, combining elements of mathematics, logic, and software engineering to address challenges that test computational thinking.[8] This discipline serves as both an educational tool and a competitive arena, fostering skills applicable to real-world software development and research.[10] The primary objectives of competitive programming are to cultivate problem-solving efficiency, encourage the optimization of code for time and memory constraints, and enable participants to compete for rankings, recognition, or prizes.[8] It aims to develop critical thinking and algorithmic proficiency while providing a platform for practice, improvement, and interaction among students and professionals.[9] Through structured contests, participants learn to balance speed, accuracy, and creativity, ultimately raising aspirations in computing fields.[9] For instance, major events like the International Olympiad in Informatics (IOI) seek to discover and encourage talent in informatics among young students.[10] Basic rules in competitive programming contests standardize participation to ensure fairness and focus on core skills. Input and output typically use standard streams, such as stdin and stdout, with problems providing data formats in specifications to avoid reliance on specific libraries or environments.[8] Scoring varies by contest; some award partial credit for solutions passing subsets of test cases (e.g., in IOI or USACO), while others grant full points only for complete, correct implementations meeting all constraints (e.g., in ICPC); rankings often prioritize the number of solved problems, followed by total execution time plus penalties for incorrect submissions.[8][9] Contests typically have overall durations of 3 to 5 hours, during which participants solve multiple problems, with per-test execution caps of 1-2 seconds to enforce efficiency.[8] Formats vary between individual competitions, such as the IOI where participants work solo, and team-based events like the International Collegiate Programming Contest (ICPC), involving groups of three from the same institution.[9][4] Problems in competitive programming fall into high-level categories that highlight diverse computational challenges. Ad-hoc problems require creative, case-specific solutions without standard techniques. Math-based problems draw on number theory, algebra, or geometry to derive formulas or properties. Graph theory problems involve modeling relationships, traversals, or optimizations on networks. Dynamic programming problems focus on breaking down complex tasks into overlapping subproblems for efficient computation.[8]Essential Skills and Prerequisites
Competitive programming requires a solid foundation in programming fundamentals, as participants must implement efficient solutions to algorithmic problems within limited time frames. Proficiency in at least one programming language, such as C++, Java, or Python, is essential due to their balance of speed, standard libraries, and support for rapid development. Key concepts include mastery of syntax for writing clean code, control structures like loops and conditionals for iterative and decision-making logic, and functions for modularizing solutions to enhance readability and maintainability.[1][11] Mathematical knowledge forms another core prerequisite, focusing on discrete mathematics rather than continuous fields. Topics such as sets and logic provide the basis for understanding problem constraints and proofs of correctness, while combinatorics aids in counting possibilities and probability helps model random events in problems. Basic algebra is necessary for manipulating equations and expressions, but advanced calculus or real analysis is not required, as contests emphasize combinatorial and logical reasoning over differential methods.[1][11] Beyond technical skills, soft abilities are critical for success in high-pressure environments. Time management under contest deadlines ensures participants allocate effort efficiently across multiple problems, often solving simpler ones first to secure points. Debugging techniques, including systematic testing with edge cases and using built-in tools for tracing execution, enable quick identification and resolution of errors. Pattern recognition, honed through practice, allows competitors to quickly map unfamiliar problems to known strategies, accelerating solution development.[12] An entry-level understanding of algorithmic complexity is indispensable for evaluating solution viability. Familiarity with Big O notation describes the asymptotic upper bound on time or space requirements as input size grows, guiding choices toward efficient implementations. Examples include O(1) for operations independent of input size, like array access; O(n) for linear scans; O(n log n) for efficient sorting; and O(n²) for nested loops, which may timeout for large inputs.[1]Historical Development
Early Origins
Competitive programming originated in the academic environments of universities during the 1970s, where contests emerged as a means to challenge students' abilities in algorithmic problem-solving and efficient coding. The inaugural such event took place in 1970 at Texas A&M University in the United States, organized by the Alpha Chapter of the Upsilon Pi Epsilon Computer Science Honor Society as the First Annual Texas Collegiate Programming Championship.[13] This local competition laid the groundwork for broader collegiate engagements, emphasizing collaboration among teams to solve complex problems under resource constraints typical of the era's mainframe systems. By 1977, the Association for Computing Machinery (ACM) formalized these efforts by sponsoring the first intercollegiate programming contest finals, held alongside the ACM Computer Science Conference in Atlanta, Georgia.[14] This marked a pivotal shift toward structured, regional competitions across ACM's eleven U.S. regions, fostering a culture of rigorous algorithm design among computer science students. Key pioneers like Donald Knuth profoundly influenced this development through his seminal multi-volume series The Art of Computer Programming, with volumes published starting in 1968, which provided a mathematical framework for analyzing and optimizing algorithms central to contest challenges. In parallel, the Soviet Union's strong tradition of mathematical olympiads, dating back to the 1930s, began adapting to computing in the late 1970s, integrating informatics problems to cultivate computational thinking among youth.[15] The 1980s saw the establishment of more formalized international events, culminating in the inception of the International Olympiad in Informatics (IOI) in 1989, hosted in Pravetz, Bulgaria, under UNESCO sponsorship to promote informatics education for high school students.[16] This followed national precursors, such as the Russian Olympiad in Informatics launched in 1988, which built on Soviet mathematical foundations to emphasize programming skills.[15] Early participants encountered substantial challenges, including severely limited access to computers—often shared mainframes with minimal processing time—necessitating a strong focus on theoretical problem-solving, manual code verification, and designing algorithms that fit within tight memory and runtime limits.[14] These constraints honed foundational skills in efficiency and creativity, shaping the discipline's emphasis on optimal solutions over brute-force approaches.Key Milestones and Growth
The 1990s marked a significant boom in competitive programming, driven by the rise of internet-enabled contests that facilitated broader access and real-time participation. The ACM International Collegiate Programming Contest (ICPC), already established, experienced substantial growth during this period, expanding from 1,816 contestants across 354 universities and 12 sites in 1990 to 4,368 contestants from 839 universities and 63 sites by 1999, reflecting a surge in international team participation.[17] This era saw the transition from localized academic events to globally connected competitions, with early online formats emerging to support distributed judging and collaboration.[17] In the 2000s, competitive programming professionalized further through the launch of dedicated platforms and corporate-backed events, integrating it more closely with industry hiring practices. TopCoder was founded in 2001 as a crowdsourcing marketplace for algorithmic challenges, quickly attracting developers and establishing regular single-round matches (SRMs) that emphasized speed and accuracy in problem-solving.[18] Google Code Jam debuted in 2003, initially hosted on TopCoder's infrastructure, and expanded rapidly, reaching over 60,000 participants from more than 130 countries by 2017, with advancing rounds that highlighted its role in talent scouting for tech roles.[19] Codeforces launched in early 2010 by Mikhail Mirzayanov, starting with its first round on February 19 attracting 175 participants, and grew into a hub for frequent contests, amassing over 600,000 registered users by 2019.[20] These platforms not only scaled participation but also influenced hiring at companies like Google and Meta, where strong performance often led to interview opportunities.[19] The 2010s and 2020s witnessed deeper integration of artificial intelligence and machine learning into competitive formats, alongside efforts to broaden accessibility. Diversity initiatives gained traction, with events like ICPC and Google Code Jam promoting inclusive participation through regional qualifiers and outreach to underrepresented groups, contributing to more varied demographics in advancing teams.[21] However, some platforms faced changes; Google discontinued Code Jam, Kick Start, and Hash Code after their 2023 editions.[21] The COVID-19 pandemic in 2020 accelerated the shift to fully virtual formats; for instance, ICPC regionals adapted to online judging, while platforms like Codeforces saw a 75% increase in submissions to 35 million attempts that year, sustaining engagement amid travel restrictions.[22] Globally, competitive programming expanded from hundreds of participants in early ICPC events to millions across platforms today, with ICPC alone reaching 52,709 contestants from 3,233 universities in 110 countries by 2018.[17] Regional hubs emerged prominently in Eastern Europe—where countries like Russia, Poland, and Ukraine dominate top rankings due to strong educational pipelines in algorithms—and Asia, led by China and India, which boast massive participation driven by national training programs and high volumes of coders excelling in speed-based contests.[23] This growth underscores the field's transformation into a worldwide phenomenon, fueled by accessible online infrastructure and its alignment with tech industry demands.[17]Competitions and Formats
Algorithmic and Problem-Solving Contests
Algorithmic and problem-solving contests form the core of competitive programming, focusing on participants' ability to devise efficient algorithms and implement solutions to complex computational problems under time constraints. These events emphasize general-purpose algorithmic challenges, typically involving discrete mathematics, graph theory, dynamic programming, and data structures, without reliance on domain-specific knowledge like machine learning. Participants compete individually or in teams, submitting code to automated judges that evaluate correctness, efficiency, and adherence to constraints such as time and memory limits. The ACM International Collegiate Programming Contest (ICPC) stands as a flagship team-based event for university students worldwide. Held annually since 1977, it features a multi-tier structure progressing from regional qualifiers to the World Finals, where teams of three students from the same institution solve 11 problems in five hours. Scoring prioritizes the number of problems solved, with ties broken by the total penalty time—calculated as the sum of submission times for correct solutions plus 20 minutes per incorrect submission per problem. No external libraries beyond standard ones are permitted, underscoring the emphasis on optimization and clean implementation. At the World Finals, the champion team receives $15,000, with additional prizes of $7,500 for other gold medalists and $6,000 for silver medalists.[24] Google Code Jam, an individual competition run by Google from 2003 to 2023, exemplified multi-round elimination formats in algorithmic contests. Participants advanced through qualification, online rounds, and onsite finals, tackling progressively harder problem sets that tested creative problem-solving and code efficiency. Each round involved 3-5 problems solved within 2-4 hours, scored primarily by the number of correct solutions, with bonuses for early submissions in some stages. The event prohibited external libraries to ensure fairness and focused on algorithmic ingenuity, awarding up to $15,000 to the grand champion in its final years. The competition concluded after its 2023 edition and is no longer active.[25] The International Olympiad in Informatics (IOI), established in 1989, targets high school students and operates on a national team selection model, sending four contestants per country to an annual international event. The competition spans two days, with three problems per day attempted individually over five hours each, allowing partial credit based on the number of test cases passed—typically out of 100 points per subtask. This format encourages robust solutions handling edge cases, with no team collaboration and restrictions on non-standard libraries. Medals are awarded based on cumulative scores across all problems, promoting global talent identification in informatics.[4][26] Codeforces, launched in 2010 by a team from ITMO University, is a prominent online platform hosting frequent algorithmic contests for a global audience. It features rounds such as Div. 1, Div. 2, and Educational contests, typically with 5-7 problems to be solved in 2 hours, rated by participant performance to update Elo-based ratings. Contests emphasize speed, accuracy, and advanced techniques, with no external libraries allowed and support for multiple languages. Codeforces serves as a key venue for practice and competition, attracting millions of participants annually and fostering a vibrant community through blogs, tutorials, and virtual participation in events like ICPC qualifiers.[27] AtCoder, originating in Japan in 2012 but attracting a global audience, hosts frequent algorithmic contests accessible online. Its weekly events, such as Beginner Contests and Regular Contests, feature 5-8 problems solvable in 2-2.5 hours, scored by the number of accepted solutions with time penalties for late submissions. These contests stress optimization for tight constraints, banning external libraries and supporting over 116 programming languages, including but not limited to C++, Python, Java, Rust, Go, Ruby, Kotlin, C#, JavaScript, Swift, Haskell, and rare ones like COBOL and Fortran.[28][29][30][31]Major Contests Recognized by CPHOF
The Competitive Programming Hall of Fame (CPHOF) recognizes major contests based on criteria such as global accessibility, onsite or offline finals, and prestige. Below is a list of active major algorithmic contests recognized by CPHOF that are not detailed elsewhere in this section.[32][33]- AtCoder World Tour Finals: An annual onsite competition inviting top 12 contestants in Algorithm and Heuristic divisions to finals held in Tokyo, Japan. It features challenging problems testing advanced algorithmic skills, with qualifiers from AtCoder's regular contests. The 2025 edition is scheduled for July.[34][32]
- Meta Hacker Cup: An annual worldwide individual programming competition hosted by Meta Platforms, featuring multiple online rounds leading to onsite finals. It includes 3-5 problems per round solved within time limits, with prizes up to $20,000 for the champion. The 2025 season began in October.[35][32]
- Topcoder Open (including Marathon): An annual tournament organized by Topcoder, encompassing algorithm competitions and marathon matches. The algorithm track involves short problems in online rounds and onsite finals, while marathons are long-duration challenges. It rewards top performers with prizes and recognition. The 2025 edition includes Marathon Match Tournament.[36][37]
- Yandex Cup: A developer championship by Yandex with algorithmic tracks, featuring online qualifications and finals in Istanbul, Turkey. Participants solve problems in 2-3 hours, with top 20 finalists offered hiring opportunities. The 2025 finals are upcoming.[38][32]
