Rules

These rules and the chosen format may change depending on the measures for the COVID-19 pandemic.

General Rules

Definitions

  • BAPC: The Benelux Algorithm Programming Contest 2021. Hosted by the Vrije Universiteit Amsterdam.
  • Organization: The members of the organizing committee.
  • Website: The website, maintained by the organization and available at 2021.bapc.eu.
  • Slack: The BAPC Slack workspace mentioned in Contact.
  • Jury: The group responsible for creating the problem set and checking the solutions submitted by the participants.
  • Technical staff: The group of people responsible for the system (the digital environment, jury system, printing, etc.).
  • Runners: Volunteers responsible for delivering print-outs, answering questions and other tasks supervised by the organization.
  • Crew: Organization, Jury, Technical staff and Runners.
  • Participant: Member of a participating team that competes in the BAPC.
  • Institution: A university or university of applied sciences in Belgium, Luxembourg, or The Netherlands.

Diversity Rules

Each institution is permitted to send two teams by default. An institution can earn additional team slots under the following conditions:

  • The institution’s preliminaries consist of at least 30% female participants. In the case where a genuine attempt is made, but the ratio is not achieved, the institution may provide details of their attempt for the BAPC committee to review.
    • One slot awarded
  • The institution proposes compelling ideas for promoting diversity at the BAPC.
    • The BAPC organizing committee determines the number of slots on a per-institution basis
    • The deadline for proposing ideas is one week before the BAPC coach meeting
    • One slot awarded
  • Further slot allocation is discussed in section general slot allocation

Discrimination of any kind will not be tolerated during the contest, and may be grounds for disqualification at the discretion of the Contest Director.

Participation

Introduction

  • Participation should be done in teams of 3 persons.
  • Teams are classified as either a student team or a company team.
  • The organization can decide to change classifications before the start of the contest.
  • Changing the composition of a team is possible after approval by the organization.
  • Changing the composition should be done before the start of the contest.
  • The substitutions should be registered as a reserve. Substitutions can be a reserve for all teams.
  • The organization decides the number of teams allowed for each competing institution.
  • The responsibility for listing which of its teams (and reserves) should be considered for participation at the BAPC lies within their respective institution.
  • The organization has the right to deny the participation of teams before the start of the contest.

Student teams

A student team:

  • Participates for free.
  • Consists of students from the same institution that are not members of another team. The institution must be located in either Belgium, Luxembourg or The Netherlands.
  • Has a coach, which is the contact person of a team. This should be a student or faculty member of the institution.
  • Participates in the student teams pool for the title “Winner of the Benelux Algorithm Programming Contest 2021”.
  • Consists of students who are eligible for the North Western European Programming Contest 2021.

Business teams

A business team:

  • Consists up to 3 persons who are employed by the same company or institution.
  • Participates in the business teams pool for the title “Winner of the Benelux Algorithm Programming Contest 2021”.
  • Diversity rules do not apply.

General slot allocation

The organization has space for a certain number of teams. Allocation of slots is done following these rules:

  • Slots which were not allocated via section Diversity rules will be allocated over the institutions based on the following criteria:
    • Two slots per university (always)
    • Up to two slots via diversity rules
    • For each university sorted by diversity ratio:
      • invite up to four teams that solved the same number of problems as the universities worst invited team via earlier rules. This is to keep competition available inside the university.
    • Invite teams sorted by performance on the preliminaries compared to all Benelux teams.
    • Willingness/Availability

Photos and videos

There may be a public livestream of the award ceremony available on the website. The recording will be made publicly available afterwards. If you do not want to appear on this livestream, or want to be removed from the footage afterwards, please contact the organization. The organization can decide to deny this request.

The Contest

Introduction

  • The language of the contest is English. All written contest materials will be in English.
  • The contest lasts for 5 hours.
  • From the beginning until one hour before the end of the BAPC, the scores are displayed.
  • A team is allowed to bring 3 identical copies of a TCR according to the ICPC rules:
    • 25 pages, single sided or
    • 13 pages, double-sided, with the last page only printed on one side
    • The pages should be able to be read from a normal reading distance.
  • A team is allowed a dictionary from English to their native language. The dictionary should have no notes written in them or in any way can be considered an extension to the TCR.

Problems

  • At least six problems will be posed. The jury intends to develop problems with minimal dependence on detailed knowledge of a particular application area or a particular contest language.
  • A contestant may submit a claim of ambiguity or error for a problem statement by submitting a clarification request to a judge. If the judges agree that an ambiguity or error exists, a clarification will be issued to all contestants.
  • The jury has the right to change or withdraw problems during the contest before informing all teams.

System

  • A solution for a problem has to be written in C99, C++ (version 14 or later will be available), Python (versions 3 will be available), Java (version 11 or later) or Kotlin (version 1.3), unless the problem statement explicitly states otherwise. Business teams can request other submission languages, on which the organization will decide whether it will be made available for submission. This is subject to change
  • A team is disqualified if they submit harmful code that disrupts the contest.
  • A submission can use the standard library of the language.
  • A list of usable libraries are provided by the organization before the contest.
  • Each team will use at most one workstation.
  • There is an explicit restriction on internet access during the contest. Interaction about problems is allowed via clarification requests with the jury and internal discussion within the team. Asking questions about the contest to crew or coaches is subject to disqualification.
  • Teams are allowed to bring a non-programmable keyboard to be swapped out with the keyboard provided by the organization.
  • Teams are not allowed to provide other HCI devices to be swapped out.
  • Teams are not allowed to make any changes to the workstation.
  • Teams will use a desktop computer provided by the organization.

Judgment

  • Each run is judged as accepted or rejected by a judge, and the team is notified of the results.
  • For each problem, the jury has a correct solution and test data.
  • A problem is solved after acceptance by the judges. The judges are solely responsible for accepting or rejecting runs.
  • The winner of the pool is decided by (in order):
    • The team with the most solved problems.
    • The team with the least total time. The total time is the sum of the time elapsed from the beginning of the contest to the submission of the accepted run, plus 20 penalty minutes for every rejected run for that problem regardless of the submission time. Time is not consumed when the problem is not solved.
    • The team that first submitted its last accepted problem is ranked higher. When a tie still remains, the team that first submitted its second-last accepted problem is ranked higher, and so on. When this does not resolve the tie, the ranks will be determined by chance.
  • The problem set is the responsibility of the jury.
  • The jury must be contacted through a “Clarification Request”.

Special Rules

  • A team may be disqualified by the organization or jury for any activity that jeopardizes the contest, such as dislodging extension cords, unauthorized modification, unintended use of contest materials, using forbidden function or library calls, or distracting behavior.
  • When a team is disqualified the coach should be notified directly. The team will be notified by the organization after the contest has ended. Exceptions to this rule are when the team obstructs other teams in participating.
  • The organization has the right to stop the contest, extend the contest time, temporarily block submissions for all teams, or change the scores in exceptional conditions.
  • In situations to which no rule applies, or there is ambiguity about the rules, the organization decides the outcome.
  • If necessary, the organization can make changes and exceptions to these rules.

Contest machine

Your contest machines are based on Ubuntu 20.04.3 (LTS) and contain the following compilers, editors, tooling and aliases. A virtual machine of the contest image can be found here.

All contest machines are equal, have a single monitor, and are equipped with a (non-ergonomic) 104-key qwerty keyboard and mouse.

Languages and compilers

The following languages and compilers are available, note not all languages are accepted as submit languages.

  • C: gcc 9.3.0
  • C++: g++ 9.3.0
  • Java: javac 11.0.11 (openjdk)
  • Python: Python 3.7.12 (pypy3 7.3.9, gcc 9.3.0)
  • C#: Mono 6.8.0.105
  • Kotlin: Kotlinc 1.4.21

Editors and IDEs

The following list of editors/IDEs are available for you to use

  • Sublime text Build 4113
  • Geany v3.23.20
  • Kate 19.12.3
  • vim 8.1 with patches 1-2269
  • emacs 26.3
  • kwrite 19.12.23
  • vsCode 1.61.2, with the following plugins:
    • ms-python.vscode-pylance v2021.10.1
    • ms-python.python v2021.10.1336267007
    • ms-vscode.cpptools v1.7.1
    • ms-toolsai.jupyter v2021.9.1101343141
    • ms-toolsai.jupyter-keymap v1.0.0
    • ms-toolsai.jupyter-renderers v1.0.3
    • redhat.java v1.0.0
    • coenraads.bracket-pair-colorizer v1.0.61
  • codeblocks 20.03
  • kdevelop 5.5.0
  • CLion 2020.3
  • Intellij Community Edition 2021.2.3
  • PyCharm Community Edition 2021.2.3

Tools

The following tools are available:

  • git 2.25.1
  • valgrind 3.15.0
  • gdb 10.2

Aliases

The following aliases are available for your convenience. The following list of aliases help to compile your programs. Since similar compiler flags are used by DOMjudge using these aliases ensures compiling is done the same locally as on DOMjudge.

  • my_gcc='gcc -g -O2 -std=gnu11 -static ${files} -lm'
  • my_g++='g++ -g -O2 -std=gnu++2a -static ${files}'
  • my_javac='javac -encoding UTF-8 -sourcepath . -d . ${files}'
  • my_kotlinc='kotlinc -d . ${files}'

The following aliases help to run your compiled programs. The run_java and run_kotlin aliases on your machines actually refer to shell scripts. The difference between the shell scripts and the listed aliases is that the commands are actually run by taskset -c 0 <COMMAND>. This ensures your program is pinned to single processor core (core #0). As is the case when your programs are run on DOMjudge.

  • run_java='java -Dfile.encoding=UTF-8 -XX:+UseSerialGC -Xss64m -Xms1920m -Xmx1920m $1
  • run_kotlin='kotlin -Dfile.encoding=UTF-8 -J-XX:+UseSerialGC -J-Xss64m -J-Xms1920m -J-Xmx1920m $1'
  • run_python='pypy3 ${files}'