Programming Environment – ICPC Documents (original) (raw)

This page describes current plans for the Programming Environment which will be available to each World Finals 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. Additional updates will be posted soon.

Each team at the World Finals will be provided with one workstation, shared between team members. Note that this is the traditional ICPC setup (not the unique setup of some previous World Finals where each team member was provided with a separate workstation). The configuration of each workstation will be as follows:

Hardware

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 World Finals will consist of the following:

Compilation of Submissions

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

gcc -x c -g -O2 -std=gnu11 -static ${files} -lm

g++ -x c++ -g -O2 -std=gnu++20 -static ${files}

javac -encoding UTF-8 -sourcepath . -d . ${files}

pypy3 -m py_compile ${files}

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:

Execution of Submissions

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

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

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

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 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 commands show the stack size and heap size settings which will be used when the program is run in the sandbox.

Building Your Own World Finals Machine

Instructions for building a system identical to what is planned for team use at the World Finals are posted HERE. Please note that the image created by those instructions is a draft, subject to changes as we approach the World Finals. See the Revised list at the bottom of that page to determine the most recent change date.

Reference Materials

The following packages will be available on team machines at the World Finals, and will be installed automatically as part of the steps listed under Building Your Own World Finals Machine, above.

We welcome all suggestions and comments. This configuration is subject to change until the final update. All questions about the system configuration should be directed to John Clevenger, ICPC Technical Director (clevenger@icpc.global).

Update History

August 23, 2024 Added updated version of Technical Notes, along with additional updates to Judging Notes and DOMjudge Team Guide

August 17, 2024 Updated Judging Notes; added link to initial version of Technical Notes; updated DOMjudge Team Guide

August 15, 2024 Added link to Judging Notes

July 31, 2024 Updated ICPC WF banner image; corrected Pycharm product description.

July 25, 2024 Added webcam specifications; corrected IntelliJ product description; updated WF OS Image on Image Build page.

July 24, 2024 Added external monitor specifications.

May 5, 2024 Initial version, cloned from 47th WF Luxor description and updated with known 48th WF details.