1. I forgot my password, what should I do? 

Please, contact our support on Slack (you have a link in your welcome email), the request needs to be done manually.

2. How do we find out which solution is the best?

Your solution will be scored based on 10 test cases. Each test case will be scored independently and the final score will be the sum of all points obtained.

3. What are the details of the trip for the winning team?

We will apply the algorithm of the winning team to real data where there will be 6 areas, each representing one continent (Asia, North and South America, Europe, Oceania, and Africa). Each member of the winning team will be given Kiwi.com flight vouchers in order to visit those 5 areas of the world using their own algorithm. They can use the flight vouchers for any flights they like, and they’ll be valid till the end of 2019.

4. Intellectual property:

Everything you create is yours. Kiwi.com does not have the rights to use it outside of the competition.

5. Where can I ask more questions?

After registration, you will be invited to the Travelling Salesman Slack channel for direct communication with the organizers.
Alternatively, feel free to contact us over Facebook messenger on fb.com/codekiwicom.

6. Where can I find more details about the previous challenge?

The website of the previous Travelling Salesman Challenge can be found here, and a blog post about the final evaluation and recap here.

7. What are the general rules of fair-play?

Breaking the following rules may lead to a disqualification of the participant:

  • submissions should be made by the participant alone (or, in the case of team competitions, by the team),
  • publishing and sharing solutions during the competition is forbidden,
  • in the case of doubts regarding authorship, the participant should be able to explain the functioning of the submitted solution,
  • solutions should preserve the legibility and clarity of the source code, all operations making it difficult to understand the program's functioning are not allowed,
  • it is forbidden to rely on extensive reverse-engineering of test data.

In addition, the competition organizer reserves the right to modify or extend the set of rules. Information on this subject can be found in the regulations provided by the organizer.

8. What programming languages can I use?

The Sphere Contest platform is based on the Sphere Engine service. The library of supported languages contains the majority of popular programming languages, e.g. C++, C#, Go, Haskell, Java, Kotlin, Node.js, PHP, Python, Ruby, Scala or Swift.

A complete list of languages can be found in the documentation of the Sphere Engine service.

Note: The list of available programming languages can be limited by the organizer of the competition. Information on this subject can be found in the regulations provided by the organizer. For example, in the case of a competition focused on functional programming languages, one should expect to be limited to the following languages: Clojure, Common Lisp, Haskell, Erlang, F#, Nemerle, OCaml, Scala, Scheme.

9. How do I send a solution to a problem?

At the bottom of the page with the description of the problem, there is the Submit solution section in which the source code editor is located. First, select the programming language using the selection field under the editor, then place the solution in the editor. We send the solution by pressing the Submit button.

10. How can I tell whether my solution has been accepted by the system?

The processing of a submission is automatic and will start immediately after the solution is sent. The status of the solution will be visible on the right side of the source code editor. After the processing finishes, the final status and the obtained score will also be visible.

11. What feedback do I get from the system when I submit a solution?

During processing, the system provides informations about the consecutive steps it performs (e.g. "starting the program for test case 4"). After the processing, the submission will receive one of the following end statuses:

  • accepted - the program is the correct solution to the problem (correctness may be partial),
  • wrong answer - the program has started correctly but is not a correct solution to the problem,
  • time limit exceeded - the program started correctly but did not stop before the time limit expired,
  • compilation error - the system was unable to compile the program (details of the compilation error should be available after clicking the status name),
  • run-time error - the program encountered an error during startup. In the case of typical errors, the system should return additional information, i.e.:
    • NZEC (non-zero exit code) - this message means that the program exited returning a value different from 0 to the shell. For interpreted languages (including JAVA) NZEC will usually mean that your program either crashed or raised an uncaught exception,
    • SIGSEGV (signal 11) - the most common error for non-interpreted languages: a "segmentation fault" of the program. This may be caused e.g. by an out-of-scope array index causing a buffer overflow, an incorrectly initialized pointer, etc,
    • SIGXFSZ (signal 25) - "output limit exceeded". Your program has printed too much data to output (typically more than 25MB),
    • SIGFPE (signal 8) - "floating point error" - an error of the arithmetic co-processor, such as division by zero, etc,
    • SIGABRT (signal 6) - raised by the program itself, e.g. by making the abort() system call.

In the case of correct solutions (i.e. those with the "accepted" status), in addition to the end status, the submission also receives a score, which translates into a score in the ranking.

12. How many times can I send a submission?

By default, there are no restrictions on the number of submissions.

Note: In special circumstances, the competition organizer may introduce a restriction. Information on this subject can be found in the regulations provided by the organizer.

13. How can I mark a solution that I would like to submit for evaluation?

The Sphere Contest system does not require manual marking of the solution. Out of all the solutions sent, the best (in the sense of the number of points scored) will be evaluated.

14. Can other participants see my solution?

No. Other contestants can only see the approximate score obtained by the top-scoring solution of each contestant (identified by their username, only).

15. What information can I find on the ranking page?

Detailed results of the competition, which are continuously being updated (more precisely: every minute), are presented on the ranking page.

The ranking system presents results separately for each round of the competition. Among the results of a single round, apart from the total number of points, points obtained for specific problems are also shown.

Note: in some cases, the competition organizer may decide to keep the ranking confidential until the end of the competition. It is also a popular practice to hide the ranking in the final stage of the competition.

16. What information can I find on the status page?

The status page presents the submissions sent by the participants. Among the presented information you can find:

  • the name of the problem,
  • the time of sending the solution,
  • the end status of the solution (e.g. "accepted", "wrong answer"),
  • the obtained score.

Note: in some cases, the competition organizer may choose to hide the status page.

17. Where can I find examples of programming problems?

Usually, the Sphere Contest platform provides a test round with warm-up programming problems. A problem called "Get familiar with the online judge system", which is a good problem to start the competition with, should be included among them.

Note: if the "Get familiar with the online judge system" problem is not available on the competition platform, we encourage you to visit the Spoj website and solve the example introductory problem.

18. How to write programs for online judge systems?

The basic functionality of the Sphere Contest platform is the mechanism of automatic verification of the submitted solution. The program sent to the system is - usually repeatedly - executed with input data from the so-called test case. The output obtained this way is compared to the standard output data which is part of the test case (in some cases the output data can also be verified in a different way).

The input data is transferred to the program using the so-called standard input (stdin). The Sphere Contest system expects the output to be printed to the so-called standard output (stdout). Functions to perform read and write operations are available for each supported programming language.

Note: You do not have to open files or read command line arguments when using the platform.

Please consider this simple problem as a representative tutorial for solving problems on online judge platforms:

Calculate the sum a+b for given integers a and b.
There will be provided a certain number of data sets for the problem. Each data set consist of two integer numbers ai and bi separated with space, where i is the number of the data set. Data sets are separated by a new line.
For i-th data set print the value of ai + bi. Answers should be separated by a new line.
2 3
10 -2
-1 5
-3 -3
0 1

As you can see the problem is to calculate the sum of two numbers but the input specification requires you to handle multiple instances of the problem. You can design a solution in the way that separates those two aspects. Here is a possible solution in C language:

struct input
  int a;
  int b;
int solution(struct input in)
  return in.a + in.b;
int main()
  struct input in;
  while (scanf("%d %d", &in.a, &in.b) != -1) {
    printf("%d\n", solution(in));
  return 0;

Of course, it is not necessary to build additional structures and we present it only for educational purposes. The most obvious solution would be more similar to the following one:

int main()
  int a,b;
  while (scanf("%d %d", &a, &b) != -1) {
    printf("%d\n", a+b);
  return 0;

There is also one common mistake which sometimes appears in the new users’ code. When it's said that you should read two numbers from the input, you cannot include any user readable interface for that. When you add any prompt message (e.g. printf("Number a is: ");) it will make your program's output file invalid in terms of output specification.

19. Where can I find sample source code files available for programming languages supported by the Sphere Contest system?

Sample source code files are available in the languages folder in the public GitHub repository maintained by Sphere Engine team. To be able to locate a proper programming language directory please use an ID that you can find on the list of supported programming languages.

20. Why does the submission not execute correctly?

There are many reasons why a program sent to Sphere Contest does not run correctly. After executing the submission, information that can help identify the right reason is available:

  • the status of the submission (e.g. "compilation error", "run-time error", "wrong answer"),
  • the content of data streams (e.g. compilation errors and run-time errors).

21. Why does the processing of a submission finish with the "Compilation Error" (CE) status?

Data regarding compilation errors can be found in the stream containing the compilation errors.

22. Why does the processing of a submission finish with the "Time Limit Exceeded" (TLE) status?

If the program has been running for too long (i.e. longer than the execution time limit), its execution was interrupted by the system. In this situation, the submission (or a single test case in the case of the Problems module) receives the TLE status.

Examples of reasons why a program might be executing for a long time:

  • the occurrence of infinite loops,
  • the high computational complexity of the algorithm used in the program,
  • a large amount of data processed by the program.

23. Why does the processing of a submission finish with the "Wrong Answer" (WA) status?

The most common reason is an error in solving the problem. First of all, it is worth checking the correctness of handling edge cases and tricky, rare or specific data. Next, it is recommended to read the description of the problem again.

24. Why does the processing of a submission finish with the "Runtime Error" (RE) status?

There are many reasons why the processing of a submission may be interrupted with an error. The following merit special mention:

  • arithmetic errors (e.g. dividing by zero),
  • unauthorized memory access,
  • allocation of too many resources.

More information on runtime errors can be found, for example, on Wikipedia.

25. What libraries can I use in a particular programming language?

For all programming languages you can use any library that is available in the standard library.

In addition, for selected programming languages, we support popular extra libraries:

  • Python 2: numpy, scipy, lxml, pycurl, simplejson
  • Python 3: numpy, scipy, lxml, pycurl, simplejson
  • PHP: curl, gmp, sqlite, tidy