A modern open-source online judge and contest platform system. It has been used to host hundreds of competitions, including several national olympiads.
See it live at dmoj.ca!
Check out the install documentation at docs.dmoj.ca. Feel free to reach out to us on Slack if you have any questions.
Problems are written in Markdown, with LaTeX-enabled math and figures, as well as syntax highlighting. Problem statements can be saved to PDF for ease of distribution to contestants.
Contestants may submit in over 60 programming languages with syntax highlighting. Problem authors can restrict problems to specific languages, and set language-specific resource limits.
Submission pages feature live updates, and submissions may be aborted by both submission authors and administrators. Compilation errors and warnings for a number of languages feature color highlighting.
Global, per-problem, and per-contest submission lists are live-updating, and can be filtered by status and language.
Contests feature an optional rating system, and can be configured to run in any timeframe. Users are also able to participate virtually after the contest ends. ICPC, IOI, AtCoder, and ECOO contest formats are supported out-of-the-box, and new formats can be added with custom code.
Contests may be limited to particular organizations, or require access codes to join. Hidden scoreboards are supported. The contest system integrates with Stanford MOSS to provide plagiarism checking. Editorial support is built-in, and editorials are automatically published once a contest ends.
Announcements from administrators, ongoing contests, recent comments and new problems are easily accessible from the home page.
Use the site in whatever language you're most comfortable in — visit translate.dmoj.ca to check the translation status of your preferred language. Problem authors can provide statements in multiple languages, and DMOJ will display the most relevant one to a reader.
The DMOJ admin interface is highly versatile, and can be efficiently used for anything from managing users to authoring problem statements.
Check out DMOJ/judge-server for more judging backend details.
Supported languages include:
The judge can also grade in the languages listed below. These languages are less tested and more likely to be buggy.
CREATE DATABASE tmath DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci;
GRANT ALL PRIVILEGES ON dmoj.* to 'tmath'@'localhost' IDENTIFIED BY 'tmath123@';
CREATE DATABASE dmoj DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci;
CREATE USER 'tmath'@'localhost' IDENTIFIED BY 'tmath123@';
GRANT ALL PRIVILEGES ON dmoj.* to 'tmath'@'localhost';
alias runsv="python3 manage.py runserver" alias mt="python3 manage.py migrate" alias mg="python3 manage.py makemigrations" alias shell="python3 manage.py shell" alias super="python3 manage.py createsuperuser" alias collect="python3 manage.py collectstatic"