Competing in a Rated Algorithm Competition

1 When are the Rated Events?

TopCoder holds two types of rated events. Single Round Matches (SRMs) are held twice a month. The day and time of SRMs varies from match-to-match. See the event schedule on TopCoder's web site for the dates and times of future SRMs. Please keep in mind that all times on TopCoder's web site are communicated in either Eastern Standard Time (EST / GMT -5) or Eastern Daylight Time (EDT / GMT-4) depending on the time of the year. The web site will specify for which time zone the time for each match is specified. In addition, you may elect to receive a reminder email preceding each SRM. To do so, select to "Next Competition" box under the "Email Notification" heading in your TopCoder profile information. By checking this option, you will also receive emails regarding upcoming TopCoder tournaments and events.
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". The details on each of these events are posted to TopCoder's site as they are finalized. You can also view the information and details of most past tournaments.

2 How does a Rated Event Differ from the Practice Room?

There are a number of differences - the biggest being that participating in a rated event will affect your TopCoder rating, whereas utilizing the practice rooms does not affect your rating. If you register for a rated event and proceed to open any of the problems during the coding phase, your rating will be affected following the match.

Additionally, a rated event is timed - whereas in a practice room you have unlimited time to submit solutions to a problem (and start over if you'd like). For example, if you attempt to submit a solution after the coding phase has ended, or a challenge after the challenge phase time has run out, the TopCoder servers will reject it.

In the practice rooms, you always have the ability to view the source code of other members who have submitted code in that room. In a rated event, you will not have the option of viewing the source code of other competitors until the start of the challenge phase.

During a rated event, you must always be cognizant of the amount of time that is remaining in the current phase of competition.

3 Registration for a Single Round Match

In order to participate in a match, you must register for that match from within the TopCoder Arena prior to the start of the match. The registration period lasts for 2 hours and 55 minutes and starts exactly 3 hours before the match begins. In order to register, highlight the appropriate match from the "Active Contests" menu and select "Register". At this point, you will be asked to agree to the terms and rules of the match, as well as answer a short multiple-choice poll. Once you select "I Agree" at the bottom, you will be registered for the match. It is a good idea to confirm your match registration by selecting "Registrants" for the appropriate match in the Active Contests menu and verifying that your handle is in the list. The list may be sorted by any of the column headings (by clicking on the heading). If you are not in this list, you will not be assigned a place in the match. Please make sure that you register well in advance of the close of registration to ensure that registration does not close while you are in the process of registering. TopCoder cannot add anyone to the match after the registration period closes. After you have registered, it is not necessary for you to remain logged into the TopCoder Arena. When you log back in, you will still be registered for that match.

4 Division One versus Division Two

At TopCoder, there are two divisions of competition. The specific division that you are in is dependant 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. Frequently, one problem from the Division One set will be shared in Division Two - generally as a higher point value problem in Division Two. A coder will move into Division One immediately upon attaining a rating of 1200 or higher. Likewise, when a coder's rating drops below 1200, they will be placed (and seeded) in Division Two. The rating calculations that are performed at the end of each match will only consider your comparative performance within the division that you competed in.

5 Room Assignments - Getting to Your Room

When the registration period for a match closes (5 minutes before the start of each match), the "room assignments" will be created. The result of room assignments is that each member who registered for the match will have been assigned to a room in which they will be competing. The algorithm that is used may differ with each match. The room assignments for a match really only matter for the challenge phase (you may only challenge those in your assigned room), since the overall rating adjustments will consider all coders in a given division - not just the room. The room assignment process will take about 2 minutes. When it has completed, you will be able to move to your competition room by selecting the appropriate match from the "Active Contests" menu, and selecting "Enter". Whenever you are assigned to a room in a current match, the "Enter" option will take you to whatever room you are assigned. If you are not assigned to any room, you will be taken to room one by default. If you are not in your assigned room when the coding phase begins, you will receive a message notifying you of such - and asking you if you would like to move directly to your assigned room. If you move to your room early (before the coding phase begins) you will not have the ability open any problems until the coding phase begins. In other words, you cannot see the problems until the coding phase begins. You may, however, see the point values assigned to the problems in the drop-down list prior to the start of the coding phase.

6 The Phases of a Rated Event

All phases of a TopCoder rated event will start and end at the same time for every competitor. Certain functionality in the Arena will become enabled or disabled based on which phase is taking place. Each event will consist of the following phases.

6.1 The Coding Phase

The Coding Phase is the period during which each competitor attempts to create solutions to three problem statements. In most cases, the coding phase will last 75 minutes, which is the total time that you have to submit solutions to any or all of the problems. When the coding phase begins, each competitor will have the opportunity to view the problem statements. Each problem can be opened by selecting its point value from the "Select One" drop-down box. The higher the point value assigned, the more difficult the problem will be. You may open the problems in any order. As soon as a problem is selected, the submission point value for that problem will begin to decrease. The longer a problem is open, the lower your score will be should you submit. You have the option to open more than one problem at a time, however the submission value of each open problem will be counting down. Closing a problem will not stop that's problem's point value countdown. Once you open a problem, you will be presented with the Coding Window. The description of the Coding Window contains information about the features and functionality available to you to allow you to create a solution to the problem, compile the solution, test the solution, and submit the solution.

6.2 The Challenge Phase

The Challenge Phase generally begins five minutes after the end of the Coding Phase (the period in between is an intermission), and will last for 15 minutes.

During the Challenge Phase, you have the opportunity to view the source code submissions of the other competitors in your competition room. If you believe that any of the submissions are flawed, you may challenge the submission with a specific test case that you feel will result in that submission returning the wrong result. If your challenge is successful, and the submission returns the wrong result, you will be awarded 50 points and the competitor will lose the points that were received for the challenged submission. However, if your challenge is unsuccessful, and the submission returns the correct result for the test case, you will lose 25 points from your score.

To challenge a competitor's submission, open the Room Summary Windowin the competition room by using the "Summary" button. Double click on any of the point values to view the source code for that submission. When viewing the source code, you will notice a "Challenge" button at the bottom of the window. The Challenge button will bring up the Argument Windows, allowing you to enter the test case with which to challenge the submission.

Challenges may also be used as a way to introduce new test cases into the suite of system test cases. Any challenge during the challenge phase that is recorded as successful will be added as a system test case - to be run against all remaining submissions during the system-testing phase.

There are a few restrictions during the challenge phase:

    • You may only submit a challenge if you have a score of zero or greater at the time of the challenge. Once your score drops below zero, you will no longer have the option / ability to challenge.
    • You may only challenge submissions made in the same competition room as your own.
    • A given submission may only be successfully challenged once. If any competitor has already successfully challenged a submission, it may not be further challenged.
    • You may not challenge your own submissions.

It is a violation of the rules to discuss any aspect of the problems or any specific submissions with anyone until the challenge phase has ended.

6.3 The System-Testing Phase

The system-testing phase is non-interactive. Immediately following the challenge phase, the TopCoder servers will run a number of housekeeping tasks, followed by the system testing. During the system testing, every problem that is still standing will be subjected to an extensive set of test cases. The system will check to make sure that each submission returns the correct result in under 2 seconds for each of these test cases. If any submission fails any of the test cases, the submission will be marked incorrect and the points achieved for that submission would be removed from that coder's total score. The system testing will generally take between 10 and 20 minutes - sometimes longer. You do not need to stay logged into the TopCoder Arena during the system tests - only if you want to see your final score as soon as it is announced. When the system tests have completed, a message will be sent out to all competitors who are logged in, and the leader board, room summary, and division summary scores will all be updated to reflect the final results.

From time to time, system tests may need to be re-run for a match, possibly several hours after it ends or even the following day. In cases where this happens, the results of the last run are considered the final results for the match. Competitors who write non-deterministic submissions (e.g. randomized algorithms, or monte-carlo type simluations) may be at risk of their pass/fail status changing as a result of system tests being re-run. The results of the last run will be considered final, without consideration to how a submission fared initially.

7 Code Obfuscation

TopCoder has a policy against any intentional obfuscation of code submissions. Any code submission that contains obvious and deliberate code obfuscation will be rejected and any points received for that submission would not count towards your final score. For the purpose of this policy TopCoder defines obfuscation as "An obvious and deliberate attempt to disguise the true behavior or nature of the code." In ALL cases, TopCoder will make the final decision as to whether or not a code submission has been intentionally obfuscated. In some cases, TopCoder may decide to "nullify" any unsuccessful challenges that have been applied against a code submission that is determined by TopCoder to be obfuscated. We encourage any TopCoder competitor to notify us in the event that you feel that a code submission during a rated event violates this policy.

8 Excessive / Extra Code Rule

TopCoder has a policy against including extra content in a submission that is not part of the solution to the problem. This includes, but is not limited to the following:

  • unused macros
  • unused #define's
  • unused typedef's
  • automatically generated code
  • testing code
  • unused personal library code
  • comments not directly related to the solution

The following things are excluded from the rule (They are not considered unused):

  • Library import statements (#include, imports, using, Imports)
  • Comments identifying plugins used
  • Comments directly related to the solution (explaining algorithms, etc.)

In ALL cases, TopCoder will make the final decision as to whether or not a code submission has an excessive amount of unused content. If TopCoder determines that a submission violates this policy, the competitor will receive 20% of the point value of the problem for that submission. No challenges will be overturned or nullified as a result of a violation in this policy. We encourage any TopCoder competitor to notify us in the event that you feel that a code submission during a rated event violates this policy.

In an effort to help competitors determine how much extra content can be contained in a submission and still not violate this policy, we provide the following general guideline. You may have a maximum of 300 non-space characters that are considered extra content or a maximum of 30% of your submission be considered extra, whichever is greater.

9 Broadcast Messages

During a competition, TopCoder may notify participants of important information regarding the competition via the use of broadcast messages. Broadcast messages, by default, will pop-up on your screen when they are sent. If the broadcast pop-up is disabled in your Arena, the "Messages" button will blink when a new message arrives. In either case, it is possible to get a history of recent messages by clicking on the "Messages" button. These messages may contain important information about changes or additions to the problem statements being used in the match. Be sure to read any messages that are sent during a match - chances are it's important! Also, remember to check for new messages every time you log into the Arena during a match - you may have missed a message that was sent while you were disconnected.

10 Getting the Status of Other Competitors

10.1 The Leader Board

During times when there is at least one TopCoder event taking place in the Arena, you can get an overview of the action by clicking on the "Leader Board" button on the left side of the Arena. The leader board window contains a list of all rooms for a given event along with the current leader in each room. Additional information for each room includes 1) the room number, 2) the seed (expected room placement) of the current leader, and 3) the current point total for the leader. If there are multiple events taking place, you can switch the leader board to a different event using the "Rounds" drop-down list at the bottom of the leader board window. Clicking on any of the column headings in the leader board will sort the list by the information in the column that was clicked.

In addition, you have the option of "drilling in" to any of the rooms by double clicking on any of the individual rooms listed in the leader board. Drilling into a room will open the Room Summary Window, which will display each member who is competing in that room, along with their current point totals and status for each of the problems.

10.2 The Room Summary Window

The Room Summary Window will show information about each competitor within a given room of competition. The room summary is also the competitor interface for the challenge phase. View the Room Summary Window explanation for more information.

11 Getting Help

At some point during your TopCoder adventures you will likely need to get a question answered by the administrators. During rated events, there are always administrators available to answer your questions. The best place to find a TopCoder administrator (identified by their bold, orange handles) is in the "Admin Lobby Room" - which can be found under the "Lobbies" menu option. Please keep in mind that all chat in the Admin Lobby Room is reserved for questions related to the current rated event that is taking place. You also may communicate with TopCoder administrators without leaving your assigned competition room. At any time while in the TopCoder Arena, prefacing a chat message with "admins: " will broadcast the chat message to the Admin Lobby Room, as well as the room that you are in. The TopCoder Administrators can reply directly to you without leaving the Admin Lobby Room. If you prefer a private correspondence with the TopCoder Administrators, you may whisper to an individual administrator by prefacing your chat message with "/msg ". This will allow you to ask a question of the administrators without other in your room being able to see the nature of the question. All administrators will see your whisper (as well as all whispered messages).

12 Determining Score

The point value of a submission is dependent upon the problem's level of difficulty and the time it took to code a solution. The TopCoder server will calculate the time spent on a problem by counting the time between when the coder selects a problem and when a solution is submitted. Keep in mind that these times are captured when a problem request or problem submission actually gets to our server, so network latency may play a minor role in the competition process.

Total points awarded = 
Where PT is the time spent coding a problem, TT is the total time allocated for coding all problems, and MP is the maximum points available for that problem.
For example:
A coder spends 22.7 minutes working on the medium problem before submitting. Given the fact that the total coding round is one hour, and the maximum point value for the medium problem is 500, the coder's awarded points for the submission will be:
500*(.3 + .7*60^2/(10*22.7^2+60^2))


293.95 points (point calculations are rounded to two decimal places)

13 Rating Changes

At the conclusion of the system-testing phase, TopCoder will recalculate the TopCoder ratings of all match participations based on our rating formula. If you did not open any problem during the coding phase, you will not have your rating adjusted. Once the rating adjustments are completed, it will be announced via an administrative broadcast message.

Your rating change is essentially a measure of how well you performed compared to others in your division - given how well you were expected to perform based on your previous rating. Your rating increases when your performance exceeds expectations!

The rating updates are subject to change based on any appeals that TopCoder may receive the day following a match. If any scores are determined to be incorrect (within the appeals period), TopCoder will re-adjust the ratings based on the correct scores.

14 Web Site Statistics

After each match, you can find comprehensive statistics about almost all aspects of the match on TopCoder's website. This includes both summary information regarding success rate on each of the problems all the way down to viewing the code submissions of each competitor and the arguments that caused any submission to fail a system test. In order to view most of the statistical information on the website, you will need to log in to the site with your TopCoder handle and password. When the statistics have been compiled by our servers and are ready to be viewed (about 15-20 minutes after the system tests are complete), TopCoder will announce the availability of the statistics via an administrative broadcast message. "Statistics / Round Overview" in the left side navigation area of the TopCoder website will take you to the top level of the statistics for the most recent match. Clicking on the "[*]" symbol next to any entry will drill into the statistics for the given entry.

15 Problems in the Practice Rooms

Both the Division One and the Division Two problem sets are placed into new practice rooms following each match. The new practice rooms will usually be available within an hour of the match ending.

16 What if You Do Not Agree with the Results?

In the event that you do not agree with some aspect of the results of a match, you have until 11:00 AM EST/EDT on the day following the match to notify TopCoder of your concerns. Please send an email to explaining in detail what it is that you feel is inaccurate. We will investigate each appeal and we will determine what, if anything, to do about it.

17 Problem Set Analysis and Discussion

Following each match, an overview and analysis of each problem will be posted on TopCoder's site. You can find an archive of these write-ups here. On many occasions, a further discussion will take place on TopCoder's forums (Round Tables), which you can find here. The TopCoder Round Tables are a great place to get questions answered about algorithms, specific problems, Arena usage, and all other aspects of TopCoder.

18 Getting Disconnected from the Arena

On occasion, we will all get disconnected from the Internet for various reasons. If you get disconnected from TopCoder's servers while you are in the Arena, simply log back in and move to your assigned competition room. You will not be penalized for logging out - however, the time will always be counting down from when you first opened the problem (or problem(s)). Once you reopen the problem that you were working on, the latest compiled or saved code should appear in the Coding Window. Remember to save your code often!

19 Cheating at TopCoder

Cheating is taken seriously at TopCoder. There are a number of ways in which you could cheat, and have your account deactivated by TopCoder.

Collaborating in any way with anyone else (member or not) during a rated event is considered cheating. This includes discussing problem statements or solutions between the time that the coding phase begins and the time that the challenge phase ends.

Using multiple accounts to participate in a rated event is considered cheating.

Registering a new account for the purpose of resetting your rating is considered cheating.

Purposefully performing poorly during a rated event with the intention of artificially lowering your rating is considered very poor sportsmanship - and may result in account deactivation.

Modifying the Arena applet in any way is against the rules and may result in account deactivation. Attempting to digitally extract competitor's code during the challenge phase is considered cheating.

Obviously, TopCoder cannot identify all malicious behavior (we try hard, though), so we do rely on each member's sportsmanship and integrity.

20 Using Pre-Written Code

Many TopCoder participants find it useful to create code libraries for situations that commonly arise in TopCoder competitions. Doing such is perfectly legal - as long as the code used has been entirely authored by you. Use of any code other than that which has been authored by you is cheating (and you know how we feel about cheating). Starting from TCO'13, the same rules apply to onsite rounds of TopCoder tournaments (before TCO'13, competitors were not allowed to bring anything "on stage" - including code libraries).

Pasting large libraries of code into each submission with the intent of only using a small percentage (if any) is against the Excessive / Extra Code Rule.

21 TopCoder Arena Plug-ins

The TopCoder Arena supports a "plug-in" architecture that allows additional functionality to be built in. While the functionality provided by these plug-ins is not initially available to you, you may freely install and configure any of the available plug-ins. Most plug-ins are designed to create a more efficient and effective competition environment. There are plug-ins available for feature-rich code editing, automatic example checking, external editor integration, auto code generation, and more. For a list of available plug-ins and instructions on how to install and use them, check here.

Have more questions? Submit a request


Please sign in to leave a comment.