On Friday, December 17th, 2021, we'll be running the second SAC Code Challenge for this year!
You can write this year's contest in any two-hour window between December 17th, 00:00 EST, until December 21st, 00:00 EST. The contest will be composed of 5 problems with problem difficulty ranging from CCC Junior 1 to CCC Senior 3.
Additionally, the problems will be themed around Christmas.
Like the most recent Code Challenge, there will be no registration requirements to participate.
DMOJ is hosting an unofficial mirror of the NOIP '21 — the Chinese National Olympiad in Informatics Provincial Round (NOIP, approximately equivalent to CCC Stage 1).
Hello again! Winter is now approaching, but so is the third DMOJ Monthly Open Programming Contest of the season!
The contest will run from Saturday, November 13th to Tuesday, November 16th.
Anyone with a DMOJ account is welcome to participate, and anyone without one is welcome to register and participate.
Contestants may participate in any 3-hour window between 00:00:00 EST of November 13th and 00:00:00 EST of November 16th. Please see the contest page for more details.
On Friday, October 29th, 2021, we'll be running the first annual and second-ever SAC Code Challenge!
You can write this year's contest in any two-hour window between October 29th, 00:00 EDT, until November 1st, 00:00 EDT. The contest will be composed of 5 problems with problem difficulty ranging from CCC Junior 1 to CCC Senior 3.
Additionally, the problems will be themed around Halloween.
Unlike last year, there will be no registration requirements to participate.
Hello again! To celebrate Thanksgiving Day, we'll be hosting the second DMOJ Monthly Open Programming Contest of the season!
The contest will run from Saturday, October 9th to Tuesday, October 12th.
Anyone with a DMOJ account is welcome to participate, and anyone without one is welcome to register and participate.
Contestants may participate in any 3-hour window between 00:00:00 EDT of October 9th and 00:00:00 EDT of October 12th. Please see the contest page for more details.
In light of recent events, DMOJ administrators have decided to not process any support requests about account recovery, starting January 1st, 2022 (which is now in effect). If you lose your second authentication factor, you must use the recovery code generated when you enabled two-factor authentication (2FA). If you do not have a recovery code, access to your account will be lost forever. This is done purely for security reasons, to protect you from social engineering attacks.
Two-factor authentication is designed to protect an account even when the password (or equivalently, the email with which the user could reset it) is compromised. Therefore, a genuine recovery request is indistinguishable from the following attack:
Suppose you are Alice, and an attacker Mallory has somehow gained access to your email. Then, Mallory can send an email to the DMOJ admins, claiming that she is Alice, has lost her phone, and begs the admins to reset 2FA. Since the admins do not know either Alice or Mallory in real life, it is conceivable that an admin could be tricked into believing Mallory is really Alice and granting the request. Now, Mallory obtains access to the account Alice, even though 2FA is supposed to prevent her from doing so.
Therefore, the only option DMOJ admins have to safeguard your account security is to ignore all support requests about account recovery. Please keep your recovery codes safe. If you don't know them, you can go to the edit profile page, regenerate them, and store them in a safe place. Thank you.
We hope you enjoyed the contest, and we'll see you again next month!
From Saturday, September 4th to Tuesday, September 7th, we'll be hosting the first DMOJ Monthly Open Programming Contest of the season!
Anyone with a DMOJ account is welcome to participate, and anyone without one is welcome to register and participate.
Contestants may participate in any 3-hour window between 00:00:00 EDT of September 4th and 00:00:00 EDT of September 7th. Please see the contest page for more details.
DMOJ is hosting An Unrated Contest, a fun contest running for a week. As the name suggests, it is unrated, though it contains normal problems. The problems are just not quite fit for a rated contest.
DMOJ's rating system was based off of Topcoder's rating system, using rating and volatility to rank contestants. Topcoder's rating system has a flaw that contestants who wish to maximize their rating have incentives to underperform in contests to increase their volatility, as higher volatility leads to larger rating changes. For similar reasons to the above, contestants' ratings do not converge quickly to their true rating. Due to these flaws in the current rating system, DMOJ has moved to a new rating system called Elo-MMR.
Elo-MMR is a rating system designed by Aram Ebtekar and Paul Liu. It's designed to be used in formats where multiple contestants compete in rated competitions at the same time and can be ranked discretely against each other. It is designed to converge contestants' ratings more quickly than existing rating systems. Furthermore, contestants wishing to maximize their rating are never incentivized to underperform in any competition.
Because of the migration, user ratings have been retroactively changed as if DMOJ had always been using Elo-MMR. On average, users' ratings will have increased slightly, so rating cutoffs for titles have been increased accordingly. The new rating title boundaries look like this:
Title
Old Range
New Range
Newbie
<1000
<1000
Amateur
1000-1199
1000-1299
Expert
1200-1499
1300-1599
Candidate Master
1500-1799
1600-1899
Master
1800-2199
1900-2399
Grandmaster
2200-2999
2400-2999
Target
≥3000
≥3000
The rating distribution on DMOJ looks as follows:
For further technical details on exactly how Elo-MMR works, please refer to this paper.