Bubble Cup 10 Rules

Bubble Cup is a team contest aimed at university and high school students. The goal of the contest is popularization of programming among students and additional training for international competitions. The contest consists of two parts – two online qualifying rounds in the spring and the final round held in Belgrade in September.


Students (elementary, high school or university) born in 1993 or later, are eligible to compete in Bubble Cup. Like previous years, Bubble Cup 10 is open for both students in Serbia and abroad.
Students doing internship in Microsoft during Bubble Cup (starting from 1st April to the end of Finals in September) are not eligible to compete.
In order for a team to compete in the finals of Bubble Cup, the following must be obeyed:

  1. Each competing team consists of maximum three contestants
  2. Contestants can form a team during registration or later, but no later than 48h before the start of the second qualifying round
  3. A team can either contain:
    • Only university students
    • Only high school and elementary school students and pupils (a team can contain a mix of high school and elementary school members)
  4. For university teams, all team members must attend the same university (e.g. University of Belgrade)
    • Team members can attend different faculties of the same university
  5. For high school and elementary school teams, team members can be from different schools
  6. After the first round, members are not allowed to switch teams
  7. All the members of a qualified team should be present in the finals. The organizers reserve the right to accept one substitute member per team, if the reasons for this are deemed justifiable for the organizers.

The qualification rounds are organized as follows:

  • Organizers will post at least 8 problems for each round.
  • First round starts 1st April 14:00 CET and lasts until 26th April 14:00 CET
  • Second round starts 1st May 14:00 CET and lasts until 26th May 14:00 CET

There will be two categories during Qualification rounds:

  1. Elementary and high school teams
  2. University teams

About Problems

Qualification round problems are directly available on Bubble Cup website under “Competitors corner” section. The contestants will solve and submit the problems on Bubble Cup website using one of the following programming languages C#, C++ and Pascal. All problem inputs should be read directly from standard input and problem outputs should be written to standard output. Compiler versions of the programming languages used by Bubble Cup grader are:

  • C++ - MinGW 4.9.2
  • C# - Visual Studio 2015
  • Pascal - Free Pascal 2.6.4

Bubble Cup contestant will encounter two types of problems: challenge and classical problems.

For classical problems every accepted solution will be rewarded with one point in the first round, and two points in the second round. A team will get one point per problem in the first round and two points in the second round, if at least one of the members solves that problem.

For each solved classical problem, each team will receive additional bonus time for the finals, which will cancel with time accounted for the team in the finals. The total bonus in minutes will be computed according to the formula:

BonusTime = [n*n/4],

where n is the number of problems solved by the team, and [x] is the integer part of x. For the total time in the finals, we will use the following formula:

TotalTime = SpentTime + PenaltyTime – BonusTime.

Challenge problems do not have a known "best" solution. Solutions for these problems compete against each other, and scores are scaled relative to the best solution from all contestants (solutions from contestants in different categories will be scaled against each other).

Scores are going to be scaled according to the following formula(s):

score = maxPointForProblem * (1 - (1 - minimalSolution / solution)^a)


score = maxPointForProblem * (1 - (1 - solution/ maximalSolution)^a)

where constant a depends on the problem and maxPointForProblem = 3 for the first round and maxPointForProblem = 6 for the second one. A member may submit multiple submissions for challenge problems and only the one with best score will be saved. Scores for this problem are going to be recalculated when new solution for that problem is submitted.

Team members can (and it is advisable to) work together, but sharing solutions with other teams is strictly forbidden. If two or more teams submit sufficiently similar solutions, after verification, both teams will be disqualified.

For the teams formed during the first qualification round, the score will be computed as described above, that is, as if the team was formed in the beginning of the qualification round. The best 10 teams from each of the two categories (Elementary/high school teams and University teams) will be invited to compete in the Finals in Belgrade. Bubble Cup organizers reserve rights to send wildcards invitations to teams not making the Top 10 list.


Teams will compete in two categories in the Finals: University and High school. All teams will have same problems.

During the final round, the teams will be presented a set of at least 7 problems, for which they will have a total of 5 hours to solve. Each team will be provided with one PC. All the PCs will have sufficiently similar configurations. During the final round, the competitors will be allowed to communicate only with their team mates and the organizers.

Usage of any printed or electronic materials as well as the usage of mobile phones, calculators and computers other than the one provided by the organizers is strictly forbidden. Contestants will be provided with pen and paper. A reasonable amount of food will be provided, but the consumption should not disturb the other competitors.

Programming languages available in the finals are: C#.NET, C++ and Pascal. The compiler versions will be announced on the Bubble Cup website before the finals.

During the competition, the contestants will send the solutions to the judging system for grading. The system will compile and run the solutions against a set of predefined test cases. If the outputs for the test cases are correct, and the time and memory constraints defined in the statement of the problem are met, then the solution is considered correct, and the team is rewarded one point. If the solution is not correct, the team will get a response shortly, explaining the reason why the solution is rejected. In case of two teams scoring the same number of points, the team that spent less time for solving them is favored. Time spent for solving each problem is the time that passed from the beginning of the contest until the moment of sending the accepted solution for evaluation. For every rejected solution, a 20 minute penalty is added to the total time. The penalty is applied only if a correct solution for that problem is submitted before the end of the contest.

During the competition, the contestants can ask organizers for clarifications regarding any of the problems. If the response is different than “no comment”, the question and the response must be available to all teams.

The organizers reserve the right to change the rules of the competition, and they will inform the competitors via the official website, in a timely fashion.