Algorithm and Marathon Match challenges can be found under our Data Science track at topcoder. Read more about how to compete now! Also, be sure to check out the member-created algorithm tutorials here.

1. Become a Member

New to topcoder? Take a moment to read over the guide for new members and then register and confirm your registration.

2. Algorithm and Marathon Matches

Algorithm Competitions: The Algorithm competitions 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.

Marathon Matches: Unlike the “traditional” algorithm competitions, Marathon Match events are scored based upon the quality of a solution. In other words, the correctness of a solution is not a simple pass/fail, but may be scored on many different criteria including how close the return values match a theoretical “correct” answer, how fast solutions run, or any of a number of other possible metrics. Some Marathon Match events are considered rated events, while others are not. Please see the match details page for each event to determine whether or not the event is rated. Additionally, some Marathon Match Events, particularly those being sponsored by a third party, may have monetary or other prizes. The type, value, and method of awarding these prizes varies by match. Read more about Marathon Matches here.

Both take place in the topcoder Arena.

3. What is the Topcoder Arena?

The topcoder Arena is 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). The Arena is where all of the competition action takes place. It is where each coder can practice, compete, or spectate.

Read detailed information on how to run the Arena here.

4. Getting Around in the Arena

Once the topcoder Arena launches, you will be presented with a login screen. From here, you need simply type in your [topcoder] handle and you will initially be placed in the main chat lobby. Each room in the Arena has a chat interface to allow communication with others in the same room. You can see who is in the room with you by checking the “Who’s here” list in your room. Each coder has a color associated with them, which is derived based on the rating/color key on the left side of the applet. The circle next to each coder’s handle represents how close they are to reaching the next rating color level. The more full the circle, the higher their rating within their color group.

From anywhere in the Arena, you have the option to move to a different area of the Arena. You can move to one of three types of rooms: 1) a lobby room, 2) a practice room, or 3) a competition room. A lobby room is a place to chat with others who are logged in. There is a special lobby room called the “Admin Lobby Room” that is used to communicate with the competition administrators. Questions about the Arena usage and the problem statements can be asked in the Admin Lobby Room.

There are numerous practice rooms that contain problem sets that have been used in past competitions. The practice rooms are a great place to become acclimated with the Arena interface and the competition structure. The competition rooms only become available shortly before the start of a scheduled match or tournament. The interface for the competition rooms is very similar to that of the practice rooms.

Read our detailed guide on using the Arena.

5. The Phases of a Single Round Match (SRM)

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.

5. Practicing and Training in the Arena

After each rated event, a practice room will be added to the Arena that contains the problem set that was used in that rated event. This gives the event participants a chance to identify their errors or fine-tune their solutions, and it gives others a chance to get a feel for the types of problems that are used in a rated event. Although the practice rooms behave a bit differently than an actual rated event, utilizing the practice rooms is the best way for a non-rated member to become familiar with the most important part of the TopCoder Arena. The practice rooms are labeled based on the match and division in which they were used as actual problems.

It is highly recommend that all new members visit the practice rooms prior to competing in an algorithm rated event. By visiting a practice room 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.

Read more about training in the Practice Rooms here.

6. Competing in Rated Algorithm Events (SRMs)

[topcoder] holds two types of rated events. Single Round Matches (SRMs) are held monthly (2-4 times per month). The day and time of SRMs varies from match-to-match. 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”.

Once you’ve trained up in the Practice Rooms and you’re ready for a Rated Event, you should read a detailed guide on how to compete in Rated Events here. Remember, participating in a Rated Event will affect your topcoder rating!

7. The Coding Window, Problem Arguments Window and Room Summary Window

The coding window is the most important part of a topcoder competition. It is in the coding window that the problem statement is shown, and the solutions are created, compiled, tested, and ultimately submitted. Learn more about each step here.

When you click on the “Test” button from within the coding window, the “Problem Arguments Window” will appear. The problem arguments window is where you will input the test case (input arguments) with which you wish to use to test your code (during the coding phase) or challenge another competitor’s code (during the challenge phase). Each argument to the problem statement will be represented by either an input area (simple data type), or by a “Create” button if the argument is an array (complex data type). See examples and more information here.

The room summary window provides competitors and spectators with the ability to view details about the status of all of the competitors within a given room. In addition, the room summary window provides the ability for competitors to the view submissions of others during the challenge phase. Learn more here.

Need support? Please send an email to
Check out the for updates
Visit the
General Help section of the Help Center for general information.
Participate in the topcoder forums (on the legacy site) and asking your fellow members for help