ICPC EUC – Programming Environment
This page describes current plans for the Programming Environment which will be available to each EUC team. Please note that these plans are subject to change. See the “Update History” list at the bottom of this page for information on the currency of what is shown here.
Hardware:
Each team at the European Championship contest will be provided with one workstation. The configuration of the workstation will be as follows:
- System Unit:
- Fujitsu CELSIUS W570 Power+
- Processor: Intel® Xeon® Processor E3-1245 v6
- Memory: 32GB
- Storage: 1TB SSD
- Screen: 24″ Full HD
- Keyboard: Fujitsu KB410K External USB Czech / English, Part number S26381-H111-A451. You can see a keyboard image here.
- External mouse: Fujitsu Mouse GL9000-B, Part number S26381-K438-V200. You can see a mouse image here.
No hardware substitutions will be allowed (that is, teams may not bring their own equipment onto the contest floor). This includes that teams may not substitute keyboards or other peripherals; all teams will use identical equipment, as described above, during the contest.
Software:
The software configuration for the EUC is based on that which is used at the ICPC World Finals, and will consist of the following:
- OS:
- Ubuntu 22.04.1 LTS Linux (64-bit). A list of packages included in the OS image can be found here.
- Desktop:
- GNOME
- Editors
- vi/vim
- gvim
- emacs
- gedit
- geany
- kate
- Languages:
- Java
- Openjdk version 17.0.5 2022-10-18
- compiler flags: -encoding UTF-8 -sourcepath . -d . {files}
- runtime flags: -Dfile.encoding=UTF-8 -XX:+UseSerialGC -Xss64m -Xms{memlim}m -Xmx{memlim}m
- C
- gcc 11.3.0 (Ubuntu 11.3.0-1ubuntu1~22.04) with compiler flags: -x c -g -O2 -std=gnu11 -static {files} -lm
- C++
- g++ 11.3.0 (Ubuntu 11.3.0-1ubuntu1~22.04) with compiler flags: -x c++ -g -O2 -std=gnu++20 -static {files}
- Python 3
- PyPy 7.3.10 with GCC 9.4.0 providing python 3.9.15
- A list of the installed Python modules can be found here.
- PyPy 7.3.10 with GCC 9.4.0 providing python 3.9.15
- Kotlin
- Version 1.7.21
- compiler flags: -d . {files}
- runtime flags: -Dfile.encoding=UTF-8 -J-XX:+UseSerialGC -J-Xss64m -J-Xms{memlim}m -J-Xmx{memlim}m
- Version 1.7.21
- Openjdk version 17.0.5 2022-10-18
Note that Python 2 is not supported at the EUC Contest (and is no longer supported at the ICPC World Finals).
- IDEs:
- Eclipse 4.13 (2022-12), configured with:
- JDT (Java Development Tools version 3.18.1400.v202212123-1800 using Java as listed above)
- CDT (C/C++ Development Tools version 11.0.0 using C/C++ as listed above)
- PyDev (Python Development Environment version 10.0.2 using Python 3 as listed above)
- IntelliJ (IDEA Community Edition version 2022.3), configured with:
- Java as listed above
- Kotlin as listed above
- CLion (version 2022.3), configured with:
- C/C++ as listed above
- Pycharm Community Edition Python IDE (version 2022.3), configured with:
- Python 3 as listed above
- Code::Blocks (version 20.03-3.1), configured with:
- C/C++ as listed above
- Visual Studio Code (version 1.74.2), configured with:
- Microsoft C/C++ Version 1.13.8. (Note that the Judges will compile C/C++ programs with GCC as listed above, not with Microsoft C/C++.)
- Eclipse 4.13 (2022-12), configured with:
Compilation of Submissions
During the contest, teams will submit proposed solutions to the contest problems to the Judges using the DOMjudge Contest Control System. Check the DOMjudge Team Guide for further details.
Source files submitted to the Judges will be compiled using the language systems and flags described above.
The “{files}” in the above descriptions 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 .cpp
- 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 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 PyPy3 Python3 interpreter to generate the output of the submission.
- For Java: the compiled main class will be executed using the java command with the runtime flags listed above.
- For Kotlin: the compiled main class will be executed using the kotlin command with the runtime flags listed above.
Compilation and execution as described above will take place in a “sandbox” on a dedicated judging machine. The judging machine will be as identical as possible to, and at least as powerful as, the machines used by teams. The sandbox will allocate memory according to the memory limit specified in the problem statement; 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.
Reference Materials:
These packages will be available on team machines at the EUC.
- JDK JavaDocs
- C++ STL docs
- DOMjudge Team Guide (as linked above)
We welcome all suggestions and comments. This configuration is subject to change until the final update.
Update History
December 18, 2023 Initial version, cloned from NAC 2023 description
March 8, 2024 SW versions were updated - Java