Competing Successfully in a Topcoder Algorithm SRM
Algorithm competitions, called Single Round Matches (SRMs) are timed competitions 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.
SRMs are held 2-4 times per month and last 2 hours each. The day and time of SRMs varies from match to match. The matches are placed on the Event calendar anywhere from 1-2 months before the match begins.
(*) SRMs typically involve a split into two divisions, each with it’s own problem set. For practical purposes, each division can be thought of as a separate competition. See more details about divisions below.
The Topcoder Competition Arena
Competition takes place in the Topcoder Arena. The Arena is offered in two forms: a web arena (beta) and a pure Java application that can be run as either an Applet from within a browser, or as an application from within JWS (Java Web Start).
Problems are written by high rated Topcoder members. Topcoder is known for having high quality problems that are interesting and challenging to solve. Because Topcoder has been running SRMs since 2001, you’ll find a problem archive containing more than a thousand problems! After each SRM, a forum is created so members can discuss the problem set, and an editorial is written and posted with the correct solutions. The problems and the competitor’s solutions from the match are also added to the Problem Archive, where members can view the problems and view how others solved (or attempted to solve) them.
Topcoder SRMs are “rated events”, which means your participation affects your Topcoder Rating.
In addition to SRMs, Topcoder holds one advancement tournament (the Topcoder Open) each year. Advancement tournaments are elimination tournaments and generally have a substantial prize purse involved. Each round of a tournament will affect the ratings of all participants, so they are also considered “rated events”.
At Topcoder, there are two divisions of competition. The specific division that you are in is dependent only on your Topcoder rating. If your Topcoder rating is 1200 or above, you will be competing in Division One. Otherwise, you will be competing in Division Two – even if you are non-rated. The problem set in Division One is harder than the Division Two problem set.
The Phases of the SRM
Each Single Round Match (SRM) consists of the following three phases:
In order to compete in the SRM, all competitors must register and possibly answer a brief survey question. Registration begins 3 hours before the match starts, until 5 minutes before a match begins. To avoid issues, it is generally recommended to register at least 15 minutes before a match is scheduled to begin.
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 maximum point values. Points for a problem are awarded upon submission of any solution that successfully compiles, and are based 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 by providing an input that will cause the competitor’s code to produce the wrong output, throw an error, exceed the time limit, or otherwise fail in some way. 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. If a competitor should ever attain a negative point total, that individual will no longer be able to make challenge attempts. The Challenge Phase lasts 15 minutes.
SYSTEM TESTING PHASE
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. If any test case causes a submission to exceed the runtime limit, or produce an error, that is also a failure. 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.
Get a feel for the types of problems you’ll find in a rated SRM by trying your hand at past problems in the Arena “Practice Rooms”. Although solving problems in the Practice Room of the Arena is a bit different than what you’ll find when you compete in a rated SRM, you will learn the Arena interface, the nature of the problems, and the expected structure of your solution.
You will also get a chance to look at thousands of submissions in various languages from other competitors who have visited the Practice Rooms. At the very least, looking at some submissions from others who use your intended language will show you: 1) exactly how to structure your class, 2) the various input and output types that are specific to your language, and 3) how to import libraries in your language. Even though the submissions in the practice rooms are not necessarily correct, you do know that they have been successfully compiled. Additionally, the arena applet allows you to attempt to challenge other solutions, in much the same way as would be done in actual competition.