Sports programming unites tournaments of very different levels from school and university Olympiads to World Cup finals. The largest international companies organize their own contests and act as sponsors of prestigious competitions like ACM-ICPC. Our team has four world programming champions, and for the fourth time, we worked with Codeforces to host VK's own tournament, the VK Cup.
Where do champions come from?
Oftentimes, it begins from school during IT Olympiads and student competitions, which then proceeds to the international level. Sports programming requires, first and foremost, substantial creative thinking and not acting according to some standard pattern. Despite this, the ability to solve Olympiad tasks must be trained. Practice sessions, lectures, solving endless problem sets — every aspect resembles traditional athletic training.
If you have already chosen a different career path, don't fret. Venturing into the world of sports programming is possible in a more simple way.
Anybody can test their skills at solving problems with varying degrees of complexity by using the Codeforces platform. Participants receive points for each solution according to the framework of the current round's ratings. After finishing a round, it is possible to read the solution if you were unable to find it yourself. The amount of tasks has increased impressively during the project's lifespan, something you can see for yourself.
I am sure that programming competitions are an engaging and effective way to learn coding, learn data structures and develop algorithmical thinking. Try to participate as Codeforces rounds take place every week and are open for everyone. Our goal is to suggest interesting tasks for every competitor!
Mikhail Mirzayanov, Codeforces founder
Tournaments and tasks
Tournament rules can vary tremendously in detail, but the general principles remain similar. Usually participants are given a limited time to solve tasks, of which the tasks themselves may be ranked by "cost" according to the level of complexity, and solutions are graded with the help of pre-prepared tests. The solutions are then evaluated using a set of prepared tests. C++ is the most popular language amongst sports programmers, with some exceptions. For example, one round of VK 2017 required participants to solve each task in a different language.
Competitions can be individual or team-based, with or without age limits. Tournaments may possess a certain theme, such as AI, exchange strategies or classical algorithms. The task itself could involve hacking a remote server or creating a neural network to achieve good results on a synthetic data set.
The creation of tasks is a separate art that requires the author to prepare no less than the participants themselves. Winners from previous year often contribute to writing tasks for the upcoming tournament. Generally speaking, a good problem has these characteristics:
- It can be solved.
- It can be solved within the time limit.
- When checking the solution, a set or tests will produce the correct solution while a wrong test will produce an error (or not satisfy the runtime and memory limits).
- A task must also be engaging. Olympiad problems are not solved "on the fly", and even if some fundamental algorithm seems to fulfill the conditions, one has to consider how to apply it correctly.
Although experienced competitors have already seen thousands of tasks but rarely remember them in complete detail, the task authors try to add lively desсriptions. In the Codeforces archive, there are problems regarding the passionate flow of love, "fibonacciness" and hipster Vasya. How can this be missed?"
Upon victory
Prominent IT companies highly value and desire winners of prestigious programming competitions. It just so happens that job offers await competitors even before the contest results are revealed.
This is unsurprising. In addition to the obvious that these competitors are smart, competitive programming experience provides developers an advantage in most cases as it shows developers are accustomed to dealing constantly with non-trivial tasks. They can quickly make complex decisions in difficult situations and effectively use all resources.
Of course, not all sectors in the industry are conducive for developers of such skill to maximize their potential. But exceptional knowledge of fundamental algorithms and the ability to select effective data structures is highly attractive to the best companies of the world that aim to develop highly loaded complex systems where developers can fully express themselves.
This applies especially to us. Almost all C-developers at VK participated in competitive programming. We employ self-written databases constructed by talented programmers who have won prestigious championships several times, such as ACM-ICPC.
VK Cup
VK has always supported this direction. We have sponsored the Olympiad programming training at SPbSU, helped organize the Summer computer school, and contributed to the creation of Codeforces. Consequently, the next most-logical step was to organize a tournament.
The VK Cup began in 2012 as an individual competition, but now the cup requires teams of two people. The ages of all participants must be no younger than 14 and no older than 23.
From March to July, participants solve tasks to advance through the qualifying rounds. Of the 2,736 teams that competed in the qualifying rounds, only the top 20 reached the finale, which is traditionally held at VK headquarters located in Singer House on Nevsky Prospect. The results of VK Cup 2017 can be found here.
I want to participate!
We are waiting for you at VK Cup 2018 and invite you to try your skills in other open tournaments:
- Facebook Hacker Cup
- Google Code Jam
- AtCoder
- IPSC
- Topcoder Open
- deadline24
- SnackDown
- Russian Code Cup
- Yandex Algorithm 2017
Want to know more?
Questions may be asked by submitting them to the official community of our technical blog.
