Contest control system

During the contest, teams will submit proposed solutions to the contest problems to the Judges using the DOMjudge contest control system.

Image

The image is based on Ubuntu 22.04 LTS, the following programs/tools are installed. The machines you will be working on are HP 450 G8 15.6 inch FHD laptops.

Compilation of submissions

Source files submitted to the Judges will be compiled using the following command line arguments for the respective language:

  • GCC 11.2.0
gcc -x c -Wall -O2 -static -pipe ${files} -lm
  • G++ 11.2.0
g++ -x c++ -std=c++20 -Wall -O ${files}
  • Java 18 (OpenJDK, Java 18.0.2-ea)
javac -encoding UTF-8 -sourcepath . -d . ${files}
  • PyPy3 7.3.9 (= Python 3.9)
pypy3 ${files}
  • Kotlin (1.7.10)
kotlinc -d . ${files}

The “${files}” in the above commands represents the list of source files from the submission which will actually be compiled. Files with the following suffixes (and only files with these suffixes) will be submitted to the compiler:

  • For C submissions: files ending with .c
  • For C++ submissions: files ending with .cc, .cpp, .cxx, or .c++
  • For Java submissions: files ending with .java
  • For Python submissions: files ending with .py
  • For Kotlin submissions: files ending with .kt

Execution of submissions

For each language, if the above compilation step is successful then the submission will be executed as follows:

  • For C/C++: the executable file generated by the compiler will be executed to generate the output of the submission.
  • For Python 3: the main source file will be executed by the Pypy Python3 interpreter to generate the output of the submission.
  • For Java: the compiled main class will be executed using the following command:
java -Dfile.encoding=UTF-8 -XX:+UseSerialGC -Xss128m -Xms1856m -Xmx1856m
  • For Kotlin: the compiled main class will be executed using the following command:
kotlin -Dfile.encoding=UTF-8 -J-XX:+UseSerialGC -J-Xss128m -J-Xms1856m -J-Xmx1856m

Execution as described above will take place in a “sandbox”. The sandbox will allocate 2GB of memory; the entire program, including its runtime environment, must execute within this memory limit. For interpreted languages (Java, Python, and Kotlin) the runtime environment includes the interpreter (that is, the JVM for Java/Kotlin and the Python interpreter for Python).

The sandbox memory allocation size will be the same for all languages and all contest problems. For Java and Kotlin, the above command shows the stack size and heap size settings which will be used when the program is run in the sandbox. For C, C++, and Python, the heap and stack sizes are limited only by the total amount of memory available in the sandbox.

Software

Editors

  • Emacs 25.2.2
  • Gedit 41.0
  • Vim / GVim 8.2
  • IntelliJ 2022.2.1
  • PyCharm 2022.2.1
  • Clion 2022.2.1
  • Visual Studio Code 1.72.1
  • Kate 21.12.3

Utilities

Terminals

  • Tilix 1.9.4
  • Byobu Terminal 5.133

Debuggers

  • ddd 3.3.12
  • Valgrind 3.18.0
  • gdb 12.0.90

Scripting

  • Perl 5.34.0 (not as a submission language!)
  • Sed 4.8
  • Git 2.34.1

Main sponsor

Prodrive Technologies

Gold Sponsor

Booking.com Huawei

Silver Sponsor

Guardsqaure