Congratulations on making it to the final! Can you tell us how you’ve been progressing through the contest so far?

Nikolay Budin: ICPC contests are held in several stages. This year, there was a regional quarter-final for teams from St. Petersburg and its neighboring cities. There, we were outperformed by a team from St. Petersburg State University. After that, we went to the regional semifinal, the first round of which took place online due to the pandemic. There, we also came second, just behind a team from the Higher School of Economics. As a result of this online round, out of about 300 participating teams, the best 48 were selected to take part in the offline semifinal that was held in the Russia – My History park in St. Petersburg. In this round, we came first. 

Did you expect this result?

Stanislav Naumov: No, it was a surprise (laughs). We actually expected to do well. 

And how would you describe the semifinal? 

Nikolay Budin: I felt it was rather challenging. All in all, we were given 11 tasks that we had to solve in five hours. The first few tasks were relatively easy, so those we had to solve on our first attempt, which we couldn’t do – we made a few mistakes, we had to then find and correct them. And each flawed attempt equals 20 penalty minutes added to our overall time. This is important because the teams are first sorted by the number of tasks solved and then by their overall time. That is, if two teams have solved eight tasks each, the one with less overall time will win. 

Nikolay Budin. Photo courtesy of Evgeny Feder. Credit: vk.com/nercnews
Nikolay Budin. Photo courtesy of Evgeny Feder. Credit: vk.com/nercnews

What helped you win?

Nikolay Budin: We solved a very hard task on our first attempt about two hours into the contest. The other teams could only hand it in at the very end, so our penalty was less. Although the team from Higher School of Economics that came second was only 40 minutes behind us – or, in other words, two failed attempts. But just like other leading teams, we had seven solved tasks. 

Roman Korobkov: It helped that we didn’t look at the scoreboard during the contest. If we saw that another team from ITMO is coming close, we could get distracted, because only one team from a university can take part in the final. Even if two ITMO University teams come first and second, only one of them can come further in the contest.

Together with the other ITMO team, you are the first ones to be coached by Gennady Korotkevich, one of the most successful competitive programmers and a PhD student at ITMO. What is the task of a coach? 

Nikolay Budin: It depends on the university. Coaches can find potential tasks, explain how to solve them, or just be close by so that they can answer any questions that may arise. We have something closer to the third option: we can find the tasks to train on ourselves, but we reach out to our coach from time to time with the issues we are facing. He spends more time working with weaker teams.

Gennady Korotkevich
Gennady Korotkevich

You said that the other ITMO University team was your main competitor during the ICPC semifinal because only one team per university can enter the final. How does it affect the relationship between your teams? 

Stanislav Naumov: Actually, we didn’t expect the other ITMO team to do so well, but they have done a great job, they turned out to be strong competitors.

Nikolay Budin: I have been taking part in programming contests since my first year at university, and each year we have three or four teams competing for victory, but there were never any conflicts. Quite the contrary, people from the other teams are those who you spend most of your time with. Anyway, you only compete directly with them in the semifinal – at other stages, we are also competing against every other university.  

When will the final take place? 

Nikolay Budin: Unfortunately, we don’t know that yet. Last year’s final had been planned for June, 2020 but was postponed and hasn’t taken place yet, so I suppose that this year’s final will be held after it. I am training for these two finals as a member of two different teams. 

Stanislav Naumov. Photo courtesy of Irina Sushilova. Credit: vk.com/nercnews
Stanislav Naumov. Photo courtesy of Irina Sushilova. Credit: vk.com/nercnews

How will you prepare? 

Stanislav Naumov: It’s fairly simple – just solve tasks. There is also usually a training camp in a village near Petrozavodsk. You can only get there on an off-road vehicle and the only entertainment is a saune. Basically, it’s a couple of houses in the forest, a cafeteria, and laptops that you can solve tasks on. This usually lasts a week or two.

Roman Korobkov: Before my previous final, we spent two months in training camps – in China, Moscow, and Petrozavodsk. The main thing is to truly solve as many tasks as you can. 

What are the tasks like in competitive programming? 

Nikolay Budin: In every task there is a condition – you are told, for instance, that you are given an array of integers. Then you are told what you need to do with this array, the simplest example will be to sort them and print them on the screen. This is an elementary task that requires one line of code, but in reality they are much harder. We never need to create an interface or work with APIs, so it’s closer to maths than to industrial R&D.

The SPb ITMO: Insert your name team in the ICPC semifinal. Photo courtesy of Evgeny Feder. Credit: vk.com/nercnews
The SPb ITMO: Insert your name team in the ICPC semifinal. Photo courtesy of Evgeny Feder. Credit: vk.com/nercnews

You take part in the contest as a team and in every team sport there are assigned roles for each team member. Is it the same in programming?

Nikolay Budin: Yes, there are usually roles in a team. Someone is better at coding, while someone is better at the maths behind it. Sometimes you are better at a particular type of task. 

And what is it like in your team? 

Stanislav Naumov: Nikolay writes everything (laughs). Roman has less to do with code and I don’t even touch the laptop. But we solve every task together, discuss it, and then give Nikolay the solution so that he can put it into code. 

Roman Korobkov: Those who watched the broadcast of the semifinal told us that we are like two top managers walking and discussing something, while Nikolay codes like a hard worker. 

How and why did you get into competitive programming? 

Roman Korobkov: I started doing it after fifth grade at school. Back then, I went to a summer camp in IT and there I started to solve simple tasks: find the maximum out of three integers. I discovered my passion and I kept getting better, so then after seventh grade I went to the computer summer school in Kostroma. Starting from eighth grade I’ve been taking part in national contests.  

Stanislav Naumov: I got into programming in ninth grade. At first, I wanted to make computer games but then I discovered tasks from contests and I grew interested in creating abstract mathematical objects. That same year I managed to enter a national competition. 

Nikolay Budin: In sixth grade, we started studying IT at school and during summer holidays my dad suggested we write something on Pascal. We did it, I remember the first program – it printed out all prime numbers up to 1,000. I liked that and so I started taking part in school contests, then I also went to the summer school in Kostoma, I got really into it. So I have been taking part in various contests since seventh grade. 

The SPb ITMO: Insert your name team in the ICPC semifinal. Photo courtesy of Alexander Blashenkov. Credit: vk.com/nercnews
The SPb ITMO: Insert your name team in the ICPC semifinal. Photo courtesy of Alexander Blashenkov. Credit: vk.com/nercnews

How do you unwind from programming and prepare yourself for contests? 

Stanislav Naumov: I go to the gym and the swimming pool. Those are ideal to clear your mind. In summer, I longboard and work on a financial startup called TopFlow. I also travel and sometimes I do research and publish articles. 

Roman Korobkov: I like music, I graduated from a music school, where I learned to play the bayan (Russian chromatic accordion – Ed.). My instrument is left at home and I have been thinking of bringing it here for the last three years. Sometimes, I have this urge to play it – but I have to compensate by playing the guitar. Otherwise, I also go to the gym and the swimming pool. 

Nikolay Budin: Well, no, that is not for me (laughs). I don’t go to the gym, I like to spend time in nature – so I go fishing or mushroom picking. I also watch a lot of movies, and I like music: I play the guitar and have recently bought a record player. 

How are contest tasks connected to programs developed by IT companies? 

Stanislav Naumov: I can say that they really help in research, if you don’t have to make a website, naturally. But there are also other areas where we can use our skills – for instance, in finance. That’s why together with Roman we are making a startup in finance. 

The ICPC semifinal. Photo courtesy of Alexander Blashenkov. Credit: vk.com/nercnews
The ICPC semifinal. Photo courtesy of Alexander Blashenkov. Credit: vk.com/nercnews

ICPC has limitations on age and the number of times one can take part in finals and semifinals. This year’s final will be your last chance of winning the world cup. Will that hang over your heads? 

Stanislav Naumov: I don’t think so, we can’t do anything about it. It won’t cause any added pressure, these are just the rules of the game. 

Nikolay Budin: Yeah, it would’ve been disappointing if we didn’t enter the final, but now it’s not a problem. 

What do ICPC contestants do after they can no longer take part in the championship? 

Nikolay Budin: I know many people who have gone through ICPC and it’s different in every case. Some find a job, some get into research. Others start organizing contests or take part in competitions without age limits. I’d say that anyone who’s taken part in the final keeps being involved with programming one way or another. Because if you enter the final, it means that you like these kinds of contests. 

Stanislav Naumov: I don’t think I will take part in more contests after this final. Maybe I will solve tasks from time to time, but I am more interested in working and doing research. 

Roman Korobkov: I caught pneumonia after my last final. We had many flights, so my immune system was weak and I had to spend two weeks in hospital. When I came out, I thought, “I am done with programming contests!”. In about a year, I knew I had to come back.