Contest machines

The following page contains the specifications for the contest machines, if you would like to see some tool/program added, please send us an email. Submissions after November 16 will no longer be considered. A virtualbox appliance containing the contestant image can be found here; both the username and password are: “contestant”. In the appliance root access (through sudo) is available, this will not be the case during the contest.

Image

The image is based on Ubuntu 18.04.1 LTS, the following programs/tools are installed

Compilation of submissions

During the contest, teams will submit proposed solutions to the contest problems to the Judges using the DOMJudge contest control system. Source files submitted to the Judges will be compiled using the following command line arguments for the respective language:

  • GCC 7.3.0
    gcc -x c -Wall -O2 -static -pipe -std=gnu11 ${files} -lm
  • G++ 7.3.0
    g++ -x c++ -Wall -O2 -static -pipe -std=gnu++14 ${files}
  • Java 10 (OpenJDK, Java 10.0.2)
    javac -encoding UTF-8 -sourcepath . -d . ${files}
  • PyPy 5.10.0 (= Python 2.7.13)
    python2 -m py_compile ${files}
  • Python3 (3.7.0)
    python3 -m py_compile ${files}
  • Kotlin (1.3.0)
    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 2: the main source file will be executed by the PyPy Python interpreter to generate the output of the submission.
  • For Python 3: the main source file will be executed by the CPython 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 -Xss64m -Xms1920m -Xmx1920m

  • For Kotlin: the compiled main class will be executed using the following command:

    kotlin -Dfile.encoding=UTF-8 -J-XX:+UseSerialGC -J-Xss64m -J-Xms1920m -J-Xmx1920m

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

  • Code::Blocks 16.01
  • Eclipse 4.8
  • Emacs 25.2
  • Geany 1.32
  • Gedit 3.28.1
  • Vim / GVim 8.0.1453
  • Idle 2.7.15
  • Idle 3.7.0
  • IntelliJ IIDEA Community 2018.2.4
  • PyCharm Community 2018.2.4
  • Clion 2018.2.4
  • Visual Studio Code 1.27.1
  • Atom 1.30.0
  • Kate 17.12.3

Utilities

Terminals

  • GNOME Terminal 3.28.2
  • MATE Terminal 1.20.0
  • xterm 330
  • Terminator 1.91

Debuggers

  • ddd 3.3.12
  • Valgrind 3.13.0
  • gdb 8.1
  • junit 3.8.2

Scripting

  • Perl 5.26.1 (not as a submission language!)
  • Python2 2.7.15
  • Sed 4.4
  • Git 2.17.1

Main sponsor:

Prodrive Technologies

ICPC Europe sponsor:

Huawei

Partners:

IMC trading

Sponsor:

ASML