Skip to content

Commit

Permalink
Add IOI legacy and ICPC contest format; DMOJ#79
Browse files Browse the repository at this point in the history
  • Loading branch information
Carson-Tang committed Jul 12, 2020
1 parent a233244 commit 9742820
Showing 1 changed file with 27 additions and 6 deletions.
33 changes: 27 additions & 6 deletions docs/site/contest_formats.md
Original file line number Diff line number Diff line change
@@ -1,22 +1,31 @@
# Contest Formats

The DMOJ ships with 4 contest formats by default: Default, Codechef IOI Ranklist (henceforth shortened to simply IOI), ECOO, and AtCoder.
The DMOJ ships with 6 contest formats by default: Default, Codechef IOI Ranklist (henceforth shortened to simply IOI), Legacy IOI (pre-2016), ECOO, AtCoder and ICPC.

## Default Contest Format

The `Default` contest format is what all contests ran on pre-April 23, 2019.

The score is the sum of the maximum scores on each problem, and ties are broken by adding the time of the last submission to each problem with a non-zero maximum score.
The score is the sum of the highest-scoring submission on each problem, and ties are broken by adding the time of the last submission to each problem with a non-zero maximum score.

Note that *any* submission will increase time penalty, not just score-changing submissions.

There are no additional options that can be configured for this contest format.

## IOI Contest Format

The `IOI` contest format emulates the scoring used by Codechef's IOI Ranklist.
The `IOI` contest format emulates the scoring used by Codechef's IOI Ranklist from 2016 onwards.

The score is equal to the sum of the maximum scores on each problem, and by default, ties are not broken.
The score is equal to the sum of the final score on each problem, where the final score for a problem is the maximum score for each subtask across all submissions, and by default, ties are not broken.
For example, consider a contestant made two submissions on a task with two subtasks. The first gets 30 points on the first subtask and 10 points on the second subtask. The second gets 0 points on the first subtask and 40 points on the second subtask. The final score for this problem will be 70.

The `cumtime` option can be set to `true` within the JSON configuration. This will break ties by summing the submissions times of the most recent submissions.

## Legacy IOI Contest Format

The `IOI (pre-2016)` contest format emulates the scoring used by Codechef's IOI Ranklist pre-2016.

The score is equal to the sum of highest-scoring submission on each problem, and by default, ties are not broken.

The `cumtime` option can be set to `true` within the JSON configuration. This will break ties by summing the submissions times of the most recent total score-changing submissions.

Expand All @@ -37,7 +46,19 @@ For example, say a submission with a score of `50/100` is submitted 23 minutes b

## AtCoder Contest Format

The `AtCoder` contest format is based on the contest format used by AtCoder. As such, your score equals the sum of your highest-scoring submission on each problem, and ties are broken based on the time of your last score-changing submission plus your penalty.
The `AtCoder` contest format is based on the contest format used by AtCoder.

The score is equal to the sum of the highest-scoring submission on each problem, and ties are broken based on the time of the last score-changing submission plus the penalty.

The penalty is specified by the `penalty` field, and defaults to 5 minutes.
The penalty is specified by the `penalty` field, and defaults to `5` minutes.
The penalty is equal to the total number of incorrect submissions prior to the highest scoring submission on each solved problem, multiplied by the specified value, in minutes, and is added to the cumulative time.

## ICPC Contest Format

The `ICPC` contest format is based on the contest format used by the ICPC.

The score is equal to the number of problems solved, and ties are broken based on the sum of the elapsed time that a correct submission was submitted to each problem plus the penalty.

The penalty is specified by the `penalty` field, and defaults to `20` minutes.
The penalty is equal to the number of incorrect submissions prior to the first correct submission, multiplied by the specified value, in minutes, and is added to the cumulative time.
Note that there is no time penalty for a problem that is not solved.

0 comments on commit 9742820

Please sign in to comment.