Systems
Hardware
Teams will be provided with ThinkPad L580s, featuring 15 inch displays and keyboards with a German QWERTZ layout. Additonally, we will provide a mouse and mousepad.
As stated in the rules, teams are allowed to bring one USB keyboard to replace the keyboard provided by us. Note that keyboards with pre-programmed macro keys are not allowed. Wireless keyboards are also not allowed. The provided mouse may not be replaced by the team.
Software
We will be using a slightly modified version of the latest ICPC World Finals Contest OS image. So the selection of editors, IDEs and programming languages will be very similar to what was avaialble at the last World Finals.
The operating system and desktop environment used will be Ubuntu 24.04.3 LTS and Xfce 4.18.
Editors
The following editors will be available:
- vim 9.1
- gvim (vim 9.1)
- nvim v0.9.5
- nano 7.2
- gedit 46.2
- geany 2.0
- kate 4:23.08.5
- emacs 29.3
IDEs
The following IDEs will be available:
- IntelliJ IDEA 2024.2.3 (Community Edition) with the following non-bundled plugins:
- IdeaVIM 2.19.0
- CLion 2024.2.2 with the following non-bundled plugins:
- IdeaVIM 2.19.0
- PyCharm 2024.2.3 (Community Edition) with the following non-bundled plugins:
- IdeaVIM 2.19.0
- Eclipse 2024-09 (4.33.0)
- Visual Studio Code 1.93.1 with the following plugins:
- C/C++ v1.26.3 by Microsoft
- Debugger for Java v0.58.2 by Microsoft
- Kotlin v0.2.36 by fwcd
- Language Support for Java v1.44.0 by Red Hat
- Pylance v2925.4.1 by Microsoft
- Python v2024.14.1 by Microsoft
- Python Debugger v2025.10.0 by Microsoft
- Code::Blocks 20.03
Programming Languages
The following programming languages will be available:
- C++ (GCC 13.3.0), compiled with
g++ -x c++ -std=gnu++20 -Wall -O2 -static -pipe -DONLINE_JUDGE -DDOMJUDGE -o "$DEST" "$@" - C (GCC 13.3.0), compiled with
gcc -x c -std=gnu11 -Wall -O2 -static -pipe -DONLINE_JUDGE -DDOMJUDGE -o "$DEST" "$@" -lm - Java (OpenJDK 21.0.8), compiled with
and executed withjavac -encoding UTF-8 -sourcepath . -d . "$@" java -Dfile.encoding=UTF-8 -DONLINE_JUDGE -DDOMJUDGE -XX:+UseSerialGC -Xss65536k -Xms1966080k -Xmx1966080k '$MAINCLASS' "$@" - Python 3 (3.9.18) with PyPy (7.3.15), compiled with
and executed withpypy3 -m py_compile "$@" export ONLINE_JUDGE=1 DOMJUDGE=1; pypy3 "${MAINSOURCE}" "$@" - Kotlin (kotlinc-jvm 1.9.24), compiled with
and executed withkotlinc -d . "$@" kotlin -Dfile.encoding=UTF-8 -DONLINE_JUDGE -DDOMJUDGE -XX:+UseSerialGC -Xss65536k -Xms1966080k -Xmx1966080k '$MAINCLASS' "$@"
For your convenience, the following aliases will be available in your :
alias myg++='g++ -x c++ -std=gnu++20 -Wall -O2 -static -pipe -g' alias judgeg++='g++ -x c++ -std=gnu++20 -Wall -O2 -static -pipe -DONLINE_JUDGE -DDOMJUDGE' alias mygcc='gcc -x c -std=gnu11 -Wall -O2 -static -pipe -g -lm' alias judgegcc='gcc -x c -std=gnu11 -Wall -O2 -static -pipe -DONLINE_JUDGE -DDOMJUDGE -lm' alias myjavac='javac -encoding UTF-8 -sourcepath . -d .' alias judgejavac='javac -encoding UTF-8 -sourcepath . -d .' alias myjava='java -Dfile.encoding=UTF-8 -XX:+UseSerialGC -Xss65536k -Xms1966080k -Xmx1966080k' alias judgejava='java -Dfile.encoding=UTF-8 -DONLINE_JUDGE -DDOMJUDGE -XX:+UseSerialGC -Xss65536k -Xms1966080k -Xmx1966080k' alias mykotlinc='kotlinc -d .' alias judgekotlinc='kotlinc -d .' alias mykotlin='kotlin -Dfile.encoding=UTF-8 -XX:+UseSerialGC -Xss65536k -Xms1966080k -Xmx1966080k' alias judgekotlin='kotlin -Dfile.encoding=UTF-8 -DONLINE_JUDGE -DDOMJUDGE -XX:+UseSerialGC -Xss65536k -Xms1966080k -Xmx1966080k' alias mypython3='pypy3' alias judgepython3='env ONLINE_JUDGE=1 DOMJUDGE=1 pypy3' alias mypypy3='pypy3' alias judgepypy3='env ONLINE_JUDGE=1 DOMJUDGE=1 pypy3'
Limits
Execution as described above will take place in a sandbox. The sandbox will allocate 2 GiB of memory; the entire program, including its runtime environment, must execute within this memory limit. For interpreted languages (Java and Python) the runtime environment includes the interpreter.
The sandbox memory allocation size will be the same for all languages and all contest problems. For Java and Kotlin, the command above 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 stack and heap sizes are limited only by the total amount of memory available in the sandbox.