judge/\DOM

DOMjudge team manual
Summary

Here follows a short summary of the system interface. This is meant as a quick introduction,
to be able to start using the system. It is, however, strongly advised that at least one of yourteam’s members reads all of this manual. There are specific details of this jury system thatmight become of importance when you run into problems. BE WARNED!
DOMjudge works through a web interface that can be found at
http://master/domjudge/team. See figures 1 and 2 on the next page for an impression.

Reading and writing
Solutions have to read all input from ‘standard in’ and write all output to ‘standard out’
(also known as console). You will never have to open (other) files. See appendix A for someexamples.

Submitting solutions
You can submit solutions with the web interface:
Web interface
From your team page, http://master/domjudge/team, click Select file. . . in the left
column and select the file you want to submit. By default, the problem is selected fromthe base of the filename and the language from the extension. Click Add another fileto add more files to the submission.

Viewing scores, submissions, etc.
Viewing scores, submissions and sending and reading clarification requests is done throughthe web interface at http://master/domjudge/team.
End of summary

Version/revision:
Last modified:
Generated:

3.4.4 / aad719b
May 16, 2014
October 13, 20141

Figure 1: the team web interface overview page.

Figure 2: the scoreboard webpage.
2

Version/revision:
Last modified:
Generated:

3.4.4 / aad719b
May 16, 2014
October 13, 2014

1. Submitting solutions

1

Submitting solutions

1.1

Web interfaceSolutions can be submitted from the web interface at http://master/domjudge/team. In
the left column click Select file. . . to select the file for submission. DOMjudge will try
to determine the problem and language from the base and extension of the filename respectively. Otherwise, select the appropriate values. Filenames must start with an alphanumericalcharacter and may contain only alphanumerical characters and +. -.
When you’ve selected the first source file, you may use the Add more files button tospecify additional files to be part of this submission (see section 4 ‘How are submissions beingjudged?’).
After you hit the submit button and confirm the submission, you will be redirected back toyour submission list page. On this page, a message will be displayed that your submission
was successful and the submission should be present in the list. An error message will be
displayed if something went wrong.

2Viewing the results of submissions

The left column of your team web page shows an overview of your submissions. It contains
all relevant information: submission time, programming language, problem and status. The
address of your team page is http://master/domjudge/team.
The top of the page shows your team’s row in the scoreboard: your position and which
problems you attempted and solved. Via the menu you can view the public scoreboard
page with the scores of all teams. Many cells will show additional “title text” information
when hovering over them. The score column lists the number of solved problems and thetotal penalty time. Each cell in a problem column lists the number of submissions, andif the problem was solved, then within parentheses the time of the first correct submission
in minutes since contest start, followed by a ‘+’ and the penalty time for any incorrect
submissions. Together these count towards each team’s total penalty time. Optionally thescoreboard can be ‘frozen’ some time before the end of the contest. The full scoreboard view
will not be updated anymore, but your team row will. Your team’s rank will be displayed as
‘?’.

2.1

Possible results

A submission can have the following results:
CORRECTThe submission passed all tests: you solved this problem!

COMPILER-ERROR There was an error when compiling your program. On the submission details page you can inspect the exact error (this option
might be disabled).
Version/revision:
Last modified:
Generated:

3.4.4 / aad719b
May 16, 2014
October 13, 20143

3. Clarifications

TIMELIMITYour program took longer than the maximum allowed time for thisproblem. Therefore it has been aborted. This might indicate thatyour program hangs in a loop or that your solution is not efficientenough.

RUN-ERROR

There was an error during the execution of your program. Thiscan have a lot of di↵erent causes like division by zero, incorrectly
addressing memory (e.g. by indexing arrays out of bounds), trying
to use more memory than the limit, etc. Also check that yourprogram exits with exit code 0!

NO-OUTPUT

Your program did not generate any output. Check that you write
to standard out.

WRONG-ANSWER

The output of your program was incorrect. This can happen simply because your solution is not correct, but remember that youroutput must comply exactly with the specifications of the jury.

PRESENTATION-ERROR The output of your program has di↵erences in presentation
with the correct results (for example in the amount of whitespace).
This will, like WRONG-ANSWER, count as an incorrect submission. This result is optional and might be disabled.
TOO-LATE

3

Bummer, you submitted after the contest ended! Your submission
is stored but will not be processed anymore.

Clarifications

All communication with the jury is to be done with clarifications. These can be found in theright column on your team page. Both clarification replies from the jury and requests sentby you are displayed there.
There is also a button to submit a new clarification request to the jury. This request is only
readable for the jury and they will respond as soon as possible. Answers that are relevant foreveryone will be sent to everyone.

4How are submissions being judged?

The DOMjudge jury system is fully automated. In principle no human interaction is necessary. The judging is done in the following way:

4.1

Submitting solutions

With the web interface (see section 1) you can submit a solution to a problem to the jury.
Note that you have to submit the source code of your program (and not a compiled programor the output of your program).
4

Version/revision:
Last modified:
Generated:

3.4.4 / aad719b
May 16, 2014
October 13, 20144. How are submissions being judged?

There your program enters a queue, awaiting compilation, execution and testing on one of
the jury computers.

4.2

Compilation

Your program will be compiled on a jury computer running Linux. All submitted source
files will be passed to the compiler which generates a single program to run out of them; forlanguages where that is relevant, the first specified file will be considered the ‘main’ source
file.
Using a di↵erent compiler or operating system than the jury should not be a problem. Be
careful however, not to use any special compiler and/or system specific things (you may beable to check compiler errors on the team page).

4.3

Testing

After your program has compiled successfully it will be executed and its output comparedto the output of the jury. Before comparing the output, the exit status of your program ischecked: if your program gives the correct answer, but exits with a non-zero exit code, theresult will be a run-error! There are some restrictions during execution. If your program
violates these it will also be aborted with a run-error, see section 4.4.
When comparing program output, it has to exactly match to output of the jury. So take carethat you follow the output specifications. In case of problem statements which do not haveunique output (e.g. with floating point answers), the jury may use a modified comparison
function.

4.4

Restrictions

To prevent abuse, keep the jury system stable and give everyone clear and equal environments,
there are some restrictions to which all submissions are subjected:
compile timeCompilation of your program may take no longer than 30 seconds.
After that compilation will be aborted and the result will be a compileerror. In practice this should never give rise to problems. Should thishappen to a normal program, please inform the jury right away.

source size

The total amount of source code in a single submission may notexceed 256 kilobytes, otherwise your submission will be rejected.

memoryDuring execution of your program, there are 3145728 kilobytes ofmemory available. This is the total amount of memory (including
program code, statically and dynamically defined variables, stack,
Java VM, . . . )! If your program tries to use more memory, it willabort, resulting in a run error.

Version/revision:
Last modified:
Generated:

3.4.4 / aad719b
May 16, 2014
October 13, 20145

4. How are submissions being judged?

number of processes You are not supposed to create multiple processes (threads). This
is to no avail anyway, because your program has exactly 1 processor
fully at its disposal. To increase stability of the jury system, there isa maximum of 15 processes that can be run simultaneously (including
processes that started your program).
People who have never programmed with multiple processes (or havenever heard of “threads”) do not have to worry: a normal programruns in one process.

4.5

Java class naming

Compilation of Java sources is somewhat complicated by the class naming conventions used:
there is no fixed entry point; any class can contain a method main. Furthermore, a classdeclared public must be located in an indentically named file.
In the default configuration of DOMjudge this is worked around by autodetecting the mainclass. When this feature is not used, then the main class should be “Main”, with method“public static void main(String args[])”, see also the Java code example in appendix A.

6Version/revision:
Last modified:
Generated:

3.4.4 / aad719b
May 16, 2014
October 13, 2014

A. Code examples

ACode examples

Below are a few examples on how to read input and write output for a problem.
The examples are solutions for the following problem: the first line of the input contains thenumber of testcases. Then each testcase consists of a line containing a name (a single word)of at most 99 characters. For each testcase output the string “Hello <name>!” on a separateline.
Sample input and output for this problem:
InputOutput

3worldJanSantaClaus

Hello world!
Hello Jan!
Hello SantaClaus!

Note that the number 3 on the first line indicates that 3 testcases follow.
A solution for this problem in C:
1234
56
78
910
11
12
13
14
15
16

#include <stdio.h>
int main(){
int i, ntests;
char name[100];
scanf("%d\n", &ntests);for(i=0; i<ntests; i++) {scanf("%s\n", name);printf("Hello %s!\n", name);}
return 0;}

Notice the last return 0; to prevent a run-error!

Version/revision:
Last modified:
Generated:

3.4.4 / aad719bMay 16, 2014
October 13, 2014

7

A. Code examples

A solution in C++:
12
3
4
5
6
7
8
910111213
1415
16
17
18

#include <iostream>#include <string>using namespace std;
int main(){
int ntests;
string name;cin >> ntests;
for(int i = 0; i < ntests; i++) {cin >> name;cout << "Hello " << name << "!" << endl;}
return 0;}

A solution in Java:
1
2
3
4
5
6
7
8
9
10
1112
13
14
15
16
1718

8

import java.io.*;class Main{public static BufferedReader in;public static void main(String[] args) throws IOException{
in = new BufferedReader(new InputStreamReader(System.in));
int nTests = Integer.parseInt(in.readLine());
for (int i = 0; i < nTests; i++) {String name = in.readLine();System.out.println("Hello "+name+"!");}}}

Version/revision:
Last modified:
Generated:

3.4.4 / aad719b
May 16, 2014
October 13, 2014