BOI 2017 is an individual contest between contestants from ten countries: Denmark, Estonia, Finland, Germany, Iceland, Latvia, Lithuania, Norway, Poland and Sweden. Each country is allowed to send up to six contestants.
The contest days of BOI 2017 are Thursday, April 27, and Friday, April 28. On each contest day the contestants will have five hours to complete three tasks.
There will be a practice contest on Wednesday, April 26, to familiarize the contestants with the contest environment. The solutions submitted during the practice contest will not be considered in the final ranking.
Environment and supplies
Each contestant will have a desk with a workstation.
The following software will be available on all workstations:
- Editors and IDEs: vim 7.4, gedit 3.10.4, emacs 24.3.1, kate 3.13.3, eclipse-luna 4.4.1, code::blocks
- Official compilers: g++ 5.4.0, Free Pascal Compiler 3.0, Java 1.8.0_121 (OpenJDK), Python 2.7.12 (pypy), Python 3.5.2 (CPython)
- Programming tools: gdb 7.7.1, ddd 3.3.12, jdb 1.8, valgrind 3.10.1, pydb 1.26, kcachegrind 0.7.4kde
Documentation for C++, Java and Pascal is available via the contest system. A copy of the documentation is here.
Paper and pencils will be available in the contest room. Contestants can bring pens, pencils and erasers with them.
If a contestant wishes to bring a keyboard or mouse with wired USB connector, or small mascots or dictionaries to the contest, these must be brought to the contest room during the practice contest. They will be checked and provided to the contestant in the contest.
After the first contest day, the contestant must leave these items on their table if they want to use them during the second contest day. After the second contest day, the contestant must take any of these items with them.
The tasks posed at BOI 2017 are intended to be of algorithmic nature. That is, the focus is on designing correct and efficient algorithms. Each task will be divided into one or more subtasks, each worth a portion of the total points.
Unless otherwise stated in the task description, the solution of a task is a program written in C++, Java, Pascal, Python 2 or Python 3. C++11 version is supported. The program submitted by a contestant must be contained in a single source file.
Solutions will have to fit within time and memory limits specified for every task separately. The memory limit is on the overall memory usage including executable code size, stack, heap, etc. Limits are applied to individual test runs.
Unless otherwise stated in the task description, submissions are required to read data from standard input and write to standard output.
Starting the contest
When contestants enter the contest room at the beginning of the contest, their workstations will be switched on. Contest tasks will be inside envelopes next to the workstations. The account details needed to access the contest system will be given to each contestant in the envelope with the tasks. Contestants are not allowed to open the envelopes or touch the workstations until the start signal is given.
The task descriptions are presented in English and the native language of the contestant if such translation is prepared by their team leader. In case of any discrepancies, the English text is binding and official.
Assistance and requests
During the contest, communication is allowed only with room supervisors and the Scientific Committee.
Contestants may ask a room supervisor for assistance at any time. The supervisors will deliver paper, attend to hardware problems, help to find toilets, etc. However, the supervisors will not answer questions about the contest tasks.
Contestants can submit questions about the contest tasks via the contest system. The question can be written in English or in the contestant’s native language. In the latter case the question is translated into English by the team leader.
A question about a task should be phrased so that a yes/no answer is meaningful. The Scientific Committee will answer every question submitted by the contestants. The answer will be one of the following:
- “ANSWERED IN TASK DESCRIPTION” — The task description contains sufficient information. The contestant should read it again carefully.
- “INVALID QUESTION” — The question is not phrased so that a yes/no answer is meaningful. The contestant is encouraged to rephrase the question.
- “NO COMMENT” — The contestant is asking for information that the Scientific Committee cannot give.
If similar questions are submitted by several contestants, the Scientific Committee may give an announcement via the contest system.
Submission and grading
The contestants can submit their solutions via the contest system and use the system to view the status of their submissions.
When a solution is submitted, it will be compiled and graded, and after this, the contestant will be able to view the results of all tests cases (full feedback).
The submission rate of each contestant is limited. A contestant can submit a solution only if they have submitted less than 3 solutions during the last 3 minutes. However, during the last 5 minutes in the contest, there are no limitations.
Each test case will have one of the following outcomes:
- WRONG ANSWER
- TIME LIMIT EXCEEDED
- RUNTIME ERROR
- OUTPUT LIMIT EXCEEDED
The contest system will show the running time of the solution for each test case. However, input and output data are not shown to the contestant.
A subtask is solved if every test in it is solved correctly and within time and memory limits. A submission will receive points for all subtasks that it solves.
The final score for a task is the maximum score of all submissions to the task. The contestants will see their final score for each task in the contest system. However, there is a small chance that the score will change later due to appeals or indeterminacy in the submission. Submissions may be re-graded, and the final score will be that yielded by the last grading.
Grading procedures can be overridden in the task description.
Ending the contest
Contestants will be given a warning both 30 and 10 minutes before the end of the contest. After the end of the contest, contestants must immediately stop working and no further submissions are allowed.
Any of the actions outlined below are considered illegal:
- Using any printed materials, except official BOI 2017 materials or any electronic devices or data carriers, except official BOI 2017 equipment during the contest.
- Bringing to contest room any electronic devices or data carriers.
- Using a workstation or an account assigned to someone else.
- Communicating in any form to other contestants or people other than BOI 2017 staff.
- Tampering with or compromising the contest system.
- Attempting to store information in any part of the file system other than the home directory of their account.
- Attempting to access any machine on the network or the Internet, other than the contest system.
- Attempting to reboot or alter the boot sequence of another workstation.
- Any other action that is deemed by the Scientific Committee as intentionally aimed at gaining unfair advantage over other contestants.
Moreover, the following rules apply:
- Submissions must not attempt to access any files on the file system.
- Submissions must be single-threaded and must not fork.
- Submissions must not attempt to use network functions.
- Submissions must not try to execute other programs.
Performing illegal actions or breaching any of the rules outlined above may be considered cheating and may result in disqualification.
After each contest the contestants will have time to check the full results of their submissions, including input and output for each test case.
In case of any disagreement with the results the team leader may submit an appeal. The Scientific Committee will answer each appeal and give a short report to the team leaders about all appeals received after each contest.
All contestants are ranked in descending order with respect to their final scores. Gold, silver and bronze medals are awarded to the contestants.
Medals will be given using the following algorithm:
- The minimum score for a gold medal is the greatest score so that at least 1/12 of the contestants will get a gold medal.
- The minimum score for a silver medal is the greatest score so that at least 1/4 of the contestants will get a gold medal or a silver medal.
- The minimum score for a bronze medal is the least score so that at most 1/2 of the contestants will get a medal.