What is the Algorithm Competition?
The Algorithm Competition, as part of the Topcoder Open, is a timed contest where all contestants compete online and are given the same problems to solve under the same time constraints. The competition is available in four programming languages: Java, C#, C++, and Python.
Algorithm rounds are run in the Arena. Learn more here.
Listen to [t-mac] explain the TCO Algorithm Competition in this video.
How does it work?
Each online and onsite round of competition consists of three phases: Coding Phase, Challenge Phase, and System Testing Phase. (Note: The format of these competition rounds is similar to the format of topcoder Single Round Matches.)
The Coding Phase is a timed event where all contestants are presented with the same three questions representing three levels of complexity and, accordingly, three levels of point earnings potential. Points for a problem are awarded upon submission of any solution that successfully compiles and are calculated on the total time elapsed from the time the problem was opened until the time it was submitted. During the online rounds, the Coding Phase will last 75 minutes. During the onsite rounds, the Coding Phase will last 85 minutes.
The Challenge Phase is a timed event wherein each competitor has a chance to challenge the functionality of other competitors’ code. A successful challenge will result in a loss of the original problem submission points by the defendant and a 50-point reward for the challenger. Unsuccessful challengers will incur a point reduction of 25 points as a penalty, applied against their total score in that round of competition. During the online rounds, the Challenge Phase will last 15 minutes. During the onsite rounds, the Challenge Phase will last 10 minutes.
The System Testing Phase is applied to all submitted code that has not already been successfully challenged. If the topcoder System Test finds code that is flawed, the author of that code submission will lose all of the points that were originally earned for that code submission. The automated tester will apply a set of inputs, expecting the output from the code submission to be correct. If the output from a coder’s submission does not match the expected output, the submission is considered flawed. The same set of input/output test cases will be applied to all code submissions for a given problem. All successful challenges from the Challenge Phase will be added to the sets of inputs for the System Testing Phase.