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 1992 or later, are eligible to compete in Bubble Cup. Similarly, to previous editions, Bubble Cup 2016 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 the Bubble Cup, the following must be obeyed:

  1. Each competing team consists of 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.

Qualification Rounds

The qualification rounds are organized as follows:

  • Organizers will post at least 8 problems for each round.
  • A round lasts from the beginning of the 1st day to the end of the 25th day of the month:
  1. First round: 1st April to 25th April
  2. Second round: 1st May to 25th May

There will be two categories during Qualification rounds:

  1. Elementary and high school teams
  2. University teams

Qualification rounds standings will not be published until 7 days before the end of the first round.

About Problems

The problems proposed for the qualification rounds will be chosen from a publicly available “online judge” system. The organizers will post on Bubble Cup website the text of the problems as well as the link to the problems on the “online judge” system. The contestants will solve the problems and submit their solutions via the provided link. After the solution is accepted, the contestants will send the source code of the solution to the organizers, for validation purposes, via the competition website.

Additional information about how to register and how to use the online judge system will be posted on the contest website before the first qualification round.

This year challenge problems will be used again. These are problems that 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 = 4 for the first round and maxPointForProblem = 8 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.

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 the challenge problems accepted solution will be rewarded with maximal four points in the first round, and eight points in the second round.  A team will get maximal number of points of the members who solved 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.

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.

Programming languages allowed in the qualification rounds are the ones available on the “online judge” system. 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 teams from each category will be invited to compete in the Finals in Belgrade. 

The Finals

All teams will compete in the same category in the Finals.

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 are allowed to bring their own writing tools and plain paper. A reasonable amount of food is allowed, 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.

FINALS UPDATE 24/08/2016:

1.     Note: Microsoft Development Center Serbia does NOT contain any copyright to the code produced by the competitors during online qualification rounds and during the Finals.