SRM competitions are timed contests where all contestants compete online and are given the same problems to solve under the same time constraints. The competitions are available in five programming languages: Java, C#, C++, VB.NET and Python.
Each Single Round Match (SRM) consists of three phases: Coding Phase, Challenge Phase, and System Testing Phase.
- 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. The Coding Phase lasts 75 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. The Challenge Phase lasts 15 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.
Be sure to read the Algorithm Competition Guide for detailed information on how to compete in algorithm competitions.
In order to practice or compete in algorithm competitions, you'll need to run the TopCoder Algorithm Competition Arena.