来源: https://icpc.baylor.edu/worldfinals/programming-environment

2019 ICPC World Finals Programming Environment

This page describes current plans for the Programming Environment which will be available to each 2019 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.

Hardware:

Each team at the World Finals will be provided with one workstation consisting of the following hardware:

  • HP ProOne 600 G4 21.5 inch FHD Non-Touch All-in-One Business PC
    • Intel Core i5 8500 3.0 2666MHz 6C 65W CPU
    • 16GB DDR4 2666 SODIMM Memory
    • 256GB Solid State Drive
  • 21.5” integrated screen
  • External keyboard: HP model 803181-131. See a keyboard image here. See important Keyboard Notes here.
  • External mouse: HP model 672654-001 Laser Optical Mouse. 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 World Finals will consist of the following:

  • OS:
    • Ubuntu 18.04.1 LTS Linux (64-bit)
  • Desktop:
    • GNOME
  • Editors
    • vi/vim
    • gvim
    • emacs
    • gedit
    • geany
    • kate
  • Languages:
    • Java
      • Openjdk version “10.0.2” 2018-07-17
      • OpenJDK Runtime Environment (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.2)
      • OpenJDK 64-Bit Server VM (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.2, mixed mode)
    • C
      • gcc (Ubuntu 7.3.0-27ubuntu118.04) 7.3.0
    • C++
      • g++ (Ubuntu 7.3.0-27ubuntu118.04) 7.3.0
    • Python 2
      • Python 2.7.13 (5.10.0+dfsg-3build2, Feb 06 2018, 18:37:50) (implemented using PyPy 5.10.0 with GCC 7.3.0). A list of the installed modules can be found here.
    • Python 3
      • CPython 3.6.6. A list of the installed modules can be found here.
    • Kotlin
      • Version 1.2.70-release-54 using JVM as listed above
  • IDEs:
    • Eclipse 4.8 (Photon), configured with:
      • JDT (Java Development Tools version 3.14.0.v20180611-0500 using Java as listed above)
      • CDT (C/C++ Development Tools version 9.5.2.201807181141 using C/C++ as listed above)
      • PyDev (Python Development Environment version 6.4.3.201807050139 using Python as listed above)
    • IntelliJ (IDEA Community Edition version 2018.2.4), configured with:
      • Java as listed above
      • Kotlin plugin version 1.2.51-release-IJ2018.2-1
    • CLion (version 2018.2.4), configured with:
      • C/C++ as listed above
    • Pycharm Community Edition Python IDE (version 2018.2.4), configured with:
      • Python 3 as listed above
    • Code::Blocks (version 16.01+dfsg-2.1), configured with:
      • C/C++ as listed above

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:

  • C:

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

  • C++:

    g++ -g -O2 -std=gnu++14 -static ${files}

  • Java:

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

  • Python 2

    python2 -m py_compile ${files}

  • Python 3

    python3 -m py_compile ${files}

  • Kotlin

    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

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.

Build Instructions:

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 these 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:

These packages will be available on team machines at the World Finals, and will be installed automatically as part of the steps listed under Build Instructions, 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.

Update History

Time Context
March 18, 2019 Updated keyboard and mouse information
March 13, 2019 Updated IntelliJ Java version information; updated Code::Blocks configuration
March 9, 2019 Updated Kotlin, Eclipse, CLion, PyCharm, Code::Blocks, and IntelliJ version numbers
March 9, 2019 Minor update to Technical Notes to align with notes being distributed to Teams
February 27, 2019 Updated Judging Notes, Technical Notes, and Python module lists to WF 2019 versions
January 31, 2019 Updated team hardware specifications; updated DOMJudge manual to WF 2019 version; added clarification on judging process
October 4, 2018 Updated language/IDE and hardware information
August 8, 2018 Initial version, cloned from WF 2018 description