When are the Marathon Match™ Events?
TopCoder holds several types of Marathon Match events, typically at least once per month. The day and time varies from event-to-event. See the event schedule on TopCoder's web site for the dates and times of future Marathon Match Events. 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 event is specified. In addition, you may elect to receive a reminder email preceding each event. 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 typical Marathon Match events, 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.
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.
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. While consistently performing well in a marathon match may be a skill that takes time to develop, getting started in one is very easy. Often times, it is possible to start off with a basic "stub" solution that does nothing more than produce an output that matches the return type criteria as specified by the problem. From there, it is possible to add logic to generate a more meaningful return value; anything from a basic simple approach to a more complicated and detailed solution are possible. Very frequently, even very simple solutions will result in a positive score, and form the foundation from which higher scoring solutions are developed.
In order to compete in a Marathon Match event one must first register. One may register at any time during the submission phase. The submission phase will last for an extended period of time (typically 1 or 2 weeks for example). In order to register, you will need to click Register next to the appropriate Marathon Match event within the Active Contests list, agree to the rules of the event and you may need to answer a survey question. Once registered, you may view the problem statement for the Marathon Match event by clicking the Problem Name from within the Active Contests list. Problem statements will be made available to all members, however you may not submit a solution until you are registered for that specific event.
The Phases of a Marathon Match Event
The Submission Phase
During the submission phase, competitors are able to submit code for the current event. There are two types of submissions that may be made during this time: Example Test and Full Submission. Example tests are a small (typically 10 or so) set of test cases. Information about these test cases is provided with the problem statement, and competitiors are given details for each test case, including raw score and runtime. Example tests may be run not more than once every 15 minutes, and cannot be run if there is a pending request (not yet completed) already in the queue. A full test tests the solution against a larger set of test cases. The only feedback to competitors following a full submission is combined/total score for the set of test cases. The scores resulting from full submissions are shown in the leaderboard throughout the match.
The System Testing Phase
After a competition completes all full submissions will be placed on a queue for automated system testing. During system tests, each submission will be run against a larger set of test cases and be issued a final score. Only this final score will be used to determine final rankings.
Getting the Status of Other Competitors
At any time during a Marathon Match event, TopCoder members may view the latest standings of that event. This will show the current rank and provisional score (for the latest submission) for each member who has registered for that event and the number of submissions they have performed during the event. Clicking on the submission count will display the date, and time of each submission for a given participant.
Provisional Scoring vs Final Scoring
During the event, submissions are tested against a set of test cases which, together, provide a provisional score for that submission. Following the conclusion of the round, all submissions are run against a larger set of system test cases, which are used to calculate the final score.
Each Marathon Match event will have its own forum available for problem statement clarifications and discussion. It is important to understand that due to the competitive nature of the event, such discussion must be limited, during the time in which the event is ongoing. In particular, forum posts which reveal details about the problem, possible approaches to a solution, or non-trivial examples not already made public in the problem statement itself, are prohibited. Such posts potentially provide an advantage to some subset of the competitors, and are grounds for a suspension from TopCoder. If it is necessary to ask a question that might be specfic to an individual solution or might reveal details about the problem, members should instead send an e-mail to firstname.lastname@example.org.
There are several types of scores to be considered in a marathon match. For each test case, a competitor's submission will be assigned a raw score. This raw score is typically a relative measure of how "well" a solution performs. This will be defined within the problem statement, and may include things such as, but not limited to, how close to optimal of a return is produced, or runtime of the solution. For full submissions and system tests, the set of raw scores is combined into a final score. The manner in which this is calculated is likewised defined in the problem statement. The most common methods are simple summation of raw scores, or summation of relative scores (that is, the sum of your_score/best_score for each test case). The details of how the score is calculated should determine the approach a competitor takes to working on a problem. It is important to note that the type of solution which obtains the best score may not always be the same as what might otherwise be considered the optimal approach. For example, on a problem that uses runtime in the scoring formula, it may be better to have a solution that runs very fast, even at the cost of some accuracy.
Following the conclusion of each competition, ratings are recalculated according to the same method defined for algorithm contests.
Note: In some cases, specific events will not be rated, particularly those which run on a third-party platform or non-standard hardware. Those events typically have a sponsor that often offers a prize pool for the top several finishers instead.
Web Site Statistics
Once the submission phase of a Marathon Match event has ended, the final results will become available by clicking the Results link. Competitors will be able to see the test cases, other competitors' submissions, and results.
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). Keep in mind, however, that onsite rounds of TopCoder advancements tournaments are handled differently. On-site finalists of TopCoder advancement tournaments are not allowed to bring anything "on stage" - including code libraries.
In some Marathon Match events, you may be provided with code that is useful for test case generation, problem visualization, or offline testing. It is assumed that you are free to use any of this code in your submission.
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 at any time until the conclusion of the submission phase.
Using multiple accounts to participate in a match 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.
Posting in the forums any code, solutions, links, or any problem specifics that could aid other competitors is possible grounds for suspension.
Obviously, TopCoder cannot identify all malicious behavior (we try hard, though), so we do rely on each member's sportsmanship and integrity.