Contest environment

Welcome to the official EJOI 2025 Contest environment! Click below to download the full PDF.
  1. Hardware

Each contestant works on a Fujitsu Lifebook E549 laptop with the following components:

  • CPU: Intel Core i5-8265U
  • Graphics: Intel UHD Graphics 620
  • RAM: 16 GB DDR4
  • Storage: 256 GB SSD
  • Display: 14.0” FHD (1920 x 1080)

A KK-3330 wired keyboard (with US layout) and a wired mouse are connected to each laptop. Contestants may bring their own keyboard and mouse, provided they do not use wireless connectivity and do not retain programmable settings when unplugged (see Contest rules).

 

2. Software
Each laptop is dual-booted with Windows 10 Pro and Ubuntu 20.04.6 LTS. The following software will be installed on each operating system:

  • Compiler – GCC
  • IDEs – CodeBlocks, Visual Studio Code (with C/C++ extension)
  • Debugger – GDB

Additionally, Microsoft Office is available on Windows, and there is LibreOffice on Ubuntu.

 

3. Grading system

The contest will use BOS (Bulgarian Olympic System) as the grading system. Basic user manual can be found here.

 

Grading will be performed on the same laptops as the contestant machines. Operating system for the grading machines will be Ubuntu 20.04.6. There are small differences in the execution environment on the grading machines compared to the contestant machines due to configuration differences.

 

The compilation command will be in the following format:

/usr/bin/g++ -DEVAL -std=gnu++17 -O2 -pipe -static -s -o task grader.cpp task.cpp

Note that the compilation scripts provided to the contestants use an analogous compilation command.

 

For each task there is an attachment package you can download from the contest system, containing sample graders, sample implementations, example test cases, compile scripts (for both Windows and Ubuntu) and run scripts (only for Ubuntu). When you test your code on your local machine, we recommend that you use the scripts from the attachment packages for the corresponding operating system.

 

Sample graders provide a basic mechanism for running your solution. However, in many cases, they are simpler than the graders used to judge your solution, e.g., they often simply print the answer of your solution without verifying its correctness. When testing a program with the sample grader, your input should match the format and constraints from the task statement, otherwise, unspecified behavior may occur. Every two consecutive tokens on a line are separated by a single space, unless another format is explicitly specified.

 

If a sample grader function call violates some of the constraints in the task statement, the sample grader may print an error message and terminate immediately. Unless specified otherwise, the error message is one of the following:

  • Invalid argument to <function_name> – a grader function <function_name> was called with arguments which violate a constraint provided in or following from the task statement
  • Too many calls – a grader function was called more times than the limit provided in the task statement

Note that the contestants can inspect the sample grader source code to see what triggers this error and/or modify the sample grader to print more information.

 

If a program does not follow the protocol described in the task statement, a contestant may receive a reason “Violation of the protocol for communication”. This typically happens in the following situations:

  • Reading from standard input or printing to standard output
  • Calling exit()

However, other violations of the protocol – particularly those involving grader function calls should be reported as one of the following reasons:

  • Invalid argument to <function_name> – a grader function <function_name> was called with arguments which violate a constraint provided in or following from the task statement;
  • Too many calls – a grader function was called too many times.