VK Cup 2012 - how it was

According to the schedule,
I write more on my own behalf and on behalf of the Codeforces project , although I managed to communicate with the participants, carefully read all the comments - so I’ll probably express my general opinion somewhere.
The VK Cup 2012 programming championship was conceived as a useful and interesting event specifically for young programmers, and judging by the reviews, we managed to make it one. In the rules of the championship there was an unusual item “age not less than 14 and not more than 23 full years at the time of registration”. That is how it turned out to break out of the circle of professional, experienced participants, to make a competition for schoolchildren and students. For example, among the finals, for the first time, many participated in such an event.
Registration started at the end of February and pretty quickly beat our expectations for the number of participants. At the time of its completion, nearly 6,000 registrations from ~ 90 countries and ~ 750 cities were recorded. At that very moment, some experienced community members expressed their age-restriction rule. You can understand them :) The
platform for the selection and the final of the championship was Codeforces . VKontakte employees made up the majority of the jury, the Codeforces team, championship veterans from the Saratov State University, also worked on the jury.
The selection grid consisted of qualifications and three qualifying rounds. Unusual in the rules were two additional wild card rounds, designed to give a second chance to go to the next round for those who could not do it on the first try.

The first of these rounds was prepared by the notorious Masha Nicolette Mikhailova, a big fan of exotic and esoteric programming languages. It was Surprise Language Round - an unusual form of competition, when participants learn the language in which you can pass the tasks only at the beginning of the round. The language of the first wild card round was chosen by an unusual Factor. As a result, participants sorted out its stack paradigm for speed, solving simple tasks. Here, for example, winger code for one of the tasks (adding numbers in an arbitrary number system):
USING: io kernel math math.parser sequences locals unicode.case arrays ;
IN: g
:: fromdig ( c -- i )
c CHAR: 9 <=
[ c CHAR: 0 - ]
[ c CHAR: A - 10 + ]
if ;
:: todig ( i -- c )
i 9 <=
[ i CHAR: 0 + ]
[ i CHAR: A + 10 - ]
if ;
:: toint ( string radix -- int )
string 0 [| n c | n radix * c fromdig + ] reduce ;
:: fromint ( int radix -- string )
"" int [| str int | str int radix mod todig prefix int radix /i dup zero? not ] loop drop ;
readln string>number
readln string>number
[| n radix |
0 n [ readln radix toint + ] times
radix fromint print
] call
It turned out unusual and fun, most liked it. Thanks so much, Nicolette ! Here are the full results of the round , and you can try your hand at solving these problems now .
The second wild card round lasted a whole week. A high result in it made it possible to jump into the last car of the final of the online qualifying rounds, so that its participants tried in earnest. By the way, the idea of the task for this round was again proposed by Nicolette, and the Codeforces team prepared the entire infrastructure. The round went on for a whole week and on it it was necessary to pack the rectangles into the given one, maximizing the tricky objective function. The participants liked the task, looking ahead, I note that the winner of the championship went to Round 3 through this wild card.
Qualifications and qualifying rounds were held according to the usual participants Codeforces rules. Employees of VKontakte, Codeforces and Saratov State University worked on the tasks. Nicolette edited the terms. I must say that there were no heavy fails with conditions or tasks, everything went to the mutual pleasure of the participants and the jury. Here are the winners of the stages:
- Qualification 1: Ra16bit (Yuri Pisarchuk), Belarus
- Qualification 2: Rokyan (Edgar Rokyan), Latvia
- Round 1: RAVEman (Anton Raichuk), USA
- Round 2: tourist (Gennady Korotkevich), Belarus
- Round 3: hos.lyric (Kazuhiro Hosaka), Japan
According to the results of round 3, a list of 50 finalists was determined. The list of countries participating in the final is Russia, China, Japan, Belarus, Indonesia, Ukraine, Poland, Taiwan (the participants insisted on the status of the country from there), the USA, Germany, Hong Kong (and they insisted), India. Typically, quite a few finalists turned out to be from Asia.
Preparations for the championship finals were several months. It turned out that bringing a group of minor foreigners to Russia was not so simple. The jury team conducted preparations not only for the final round, but also for the unofficial CodeRaces game, the details of which were not fully disclosed to the participants in advance.

On July 13, the opening of the championship took place in the very center of St. Petersburg at the Kempinski Moika 22 Hotel. Participants were introduced to each other through slide shows of their informal photos. The presenters mentioned some interesting facts about them, for example: “When asked about the city of his dreams, neex.emil called Ankh-Morpork”, “SergeyRogulenko wrote his first line of code at age 6!”

The finalists were given small but pleasant souvenirs. With short but fiery speeches to the participants, Ilya Perekopsky (vice president of VKontakte), I (Mikhail Mirzayanov, head of Codeforces and representative of SSU) greeted the participants. A little later, having somehow miraculously solved the difficulties with flights from Europe, Pavel Durov appeared in the hall. In his welcoming speech, he announced an increase in the prize pool, thereby breaking the applause of the audience. Thus, in a couple of days the guys had to compete for:
- 1st place - $ 30,000;
- 2nd place - $ 20,000;
- 3rd place - $ 10,000;
- 4-5 place - $ 2000;
- 6-10 place - $ 1000.
On the same day, everyone could enjoy a walk along the rivers and canals of St. Petersburg. I wonder why our guides like the mournful side of history so much. At the mention of Kutuzov, our guide instantly told the circumstances of his death. We learned who was in the Crosses and all about the deaths in the royal family. I wonder what kind of foreigners hear all this? In fact, I wanted to somehow celebrate!

The leadership of VKontakte was in full contact with the finalists. Pavel shared some plans, listened to the impressions of the guys. The trip went on for quite some time, but there were no bored ones.
The next day was mainly dedicated to the unofficial gaming event CodeRaces. Participants were asked to write artificial intelligence for cars that race across the field, collecting flags, firing off tires and burn with a blue flame when their hit point ends. Additional entertainment was brought by two obstacles on the field and service stations, where you can heal. Participants enthusiastically coded the bots for three and a half hours. You could use Pascal, C ++ or Java. Most chose C ++, but Pascal may have been completely deprived of attention. Well, to hell with it :) By the way, a much wider list of languages is available at the competition itself: C / C ++, Pascal, Java, C #, Python, Ruby, PHP, OCaml, Haskell, Perl, Scala.

On the evening of the same day, a show was held in the hotel's banquet hall, on which the winner was determined during the tournament. All the games of the tournament were shown on the big screen, and the participants were expressively ill. It was clearly seen that the closer to the final, the more intelligent strategies remain. It's funny that many participants learned to avoid obstacles, but everyone crashed into the walls. Four strategies reached the final: yeputons (Russia), rudradevbasak (India), tourist (Belarus), iwiwi (Japan). Egor Suvorov (yeputons) was in first place before the final, but in the final against his strongest rivals, his strategy let us down and rudradevbasak took the first place. Below you can watch a video recording of one of the three finals. The top three places received prizes, and the energy boost from participating is all.

This day could not do without Russian-Chinese flavor. One of the finalists from the Middle Kingdom upset reported that on the Nevsky some villains had robbed him of a camera. He was trying to score at all the events and go to the police, but VKontakte decided to diplomatically hush up the situation, compensating the participant for the loss. By the way, he was not taken aback and when asked about the model he wrote a rather sickly one (I don’t remember the exact numbers). By the way, when they later bought and handed over the camera to him, he said that he had mixed it up and had in mind the 5D Mark, but here he was still offered to go to the police. You will not believe: he did not go :)
The next day was entirely devoted to the main event - the final round of the VK Cup 2012. At 11:00 in the headquarters of VKontakte, the final was launched. The first (in the 15th minute), task E was passed by the notorious tourist (Gennady Korotkevich, Belarus), showing the rest of the participants which of the tasks is simpler. It was followed by theycallhimtom (USA), tmt514 (Hong Kong). The Chinese participant s-quark was the first to open task C, he passed it in the 21st minute. Further, a large number of participants began to take these two tasks, although vlad89 (Vlad Simonenko, Ukraine) soon opened B. These tasks turned out to be the most solved tasks of the final. Our compatriots could not show a quick start - the leader among ours at the start was natalia (Natalya Bondarenko, Russia), who solved task C in the 29th minute. The course of the competition showed that most of the participants sent three tasks, and in the group with four tasks, the majority were guys from Asia. 15 minutes before the end, Gennady Korotkevich sent the most difficult task A, his solution passed preliminary testing and by the end of the coding he headed the standings. He was followed by sevenkplus and s-quark from China. However, the final testing ahead was a full set of tests, so it was too early to draw any conclusions. Toward the end of the competition, William Poucher, Executive Director of ACM-ICPC (Student Programming World Programming Championships), visited the final round. Possessing great authority and amazing charisma, he brightened up the finale by talking with participants and taking pictures with them. 15 minutes before the end, Gennady Korotkevich sent the most difficult task A, his solution passed preliminary testing and by the end of the coding he headed the standings. He was followed by sevenkplus and s-quark from China. However, the final testing ahead was a full set of tests, so it was too early to draw any conclusions. Toward the end of the competition, William Poucher, Executive Director of ACM-ICPC (Student Programming World Programming Championships), visited the final round. Possessing great authority and amazing charisma, he brightened up the finale by talking with participants and taking pictures with them. 15 minutes before the end, Gennady Korotkevich sent the most difficult task A, his solution passed preliminary testing and by the end of the coding he headed the standings. He was followed by sevenkplus and s-quark from China. However, the final testing ahead was a full set of tests, so it was too early to draw any conclusions. Toward the end of the competition, William Poucher, Executive Director of ACM-ICPC (Student Programming World Programming Championships), visited the final round. Possessing great authority and amazing charisma, he brightened up the finale by talking with participants and taking pictures with them. However, the final testing ahead was a full set of tests, so it was too early to draw any conclusions. Toward the end of the competition, William Poucher, Executive Director of ACM-ICPC (Student Programming World Programming Championships), visited the final round. Possessing great authority and amazing charisma, he brightened up the finale by talking with participants and taking pictures with them. However, the final testing ahead was a full set of tests, so it was too early to draw any conclusions. Toward the end of the competition, William Poucher, Executive Director of ACM-ICPC (Student Programming World Programming Championships), visited the final round. Possessing great authority and amazing charisma, he brightened up the finale by talking with participants and taking pictures with them.


The guys went for lunch, and the jury tested all the solutions and prepared a presentation to demonstrate the final results. Already here it turned out that during the final, the participants did not ask a single question on the tasks. As an organizer of such events with experience, I can say that this is an exceptional case. Even a thought flashed - they overdid it when working on cleanliness of conditions :)
Closing took place in the same wonderful hall of the Kempenski hotel, where other evenings were held. For some time, the participants enjoyed a delicious dinner, live music and the excitement of whether their solutions passed all the tests or not. The closing was twice led by the world programming champion, VKontakte developer Andrey Lopatin. I didn’t even expect him to do so well. Well done, Andrey! The speech was held by William Poucher, then the results were opened in the form of a short presentation. It was funny to hear the simultaneous sigh of disappointment of the Russian-speaking audience and the joy of the Chinese when the decision of Gennady on task A turned out to be wrong. He moved to 3rd place, and the first two participants were Chinese citizens. To the friendly applause of the whole hall, Pavel Durov awarded the top ten finalists with diplomas of winners and beautiful HP Envy 14 Specter laptops, and the top three were presented with symbolic checks. The champion received a gilded award in the form of a massive star on a stand with the inscription VK Cup 2012. The hall applauded for a very long time to the winners.
So, here are the names of the winners:
- sevenkplus, Peter Gu, China
- s-quark, Qinshi Wang, China
- tourist, Gennady Korotkevich, Belarus
- dolphinigle, Irvan Jahja, Indonesia
- yeputons, Egor Suvorov, Russia
- WJMZBMR, Tom Chen, China
- shangjingbo, Jingbo Shang, China
- vlad89, Vladislav Simonenko, Ukraine
- SergeyRogulenko, Sergey Rogulenko, Russia
- meret, Jakub Pachocki, Poland
Already at the conclusion of the ceremony, Andrei Lopatin went on stage and thanked all the finalists, all the organizers and all involved in the conduct. He tore off special applause when he announced that gift laptops would be awarded to all participants in the final, and not just to the top 10 of them! 4/5 of the audience noticeably amused!
On this, the official part of the closure was over, but many of the participants were in no hurry to leave for the rooms. A group of Russian-speaking children remained in the hall for a long time, discussing the past event. Paul, too, was late, taking advantage of the moment, talking with the participants. At that moment, I was restoring the regular work of Codeforces, therefore, I took part in the conversation a little. What a pity, it was fun.


The next day, it was nice to read the enthusiastic comments on the Codeforces pages. It's nice when the result is to the liking of the participants. I will only give the most striking of the comments:
- kelvin:
+1, it was a great event and it is really lucky and enjoyable to be here. All the thanks to VK and Codeforces and all who helped hold this contest!
- -XraY-:
Agree! I've met a lot of new people, competed in some rounds, lived in the beautiful hotel in the center of Saint-Petersburg. My favorite part - codegame. It was very funny to watch cars, kicking each other with tires.) I'm fully satisfied, thanks a lot to organizers.
- winger:
Well, why the hell did I merge round3? :)
- meret:
Thanks for the really great event. This was definitely one of the best onsite competitions I've been to.
- cgy4ever:
Me too, VK is really the winner of the contest of contests. VK really make everyone happy in the event, including the participant like me that not performed well at the final round. By the way, I found my name-card with red handle, but in fact I'm yellow. So I want to become red by the final round. But unfortunately I become more 'yellow' caused by mistakes in different problems. So it gives me a lesson: coding / thinking carefully (and maybe checking twice) is more important to the speed of coding.
I hope that we will be able to organize the VK Cup 2013 next year. Thanks to everyone who participated both in the competition and in its preparation!
A selection of links for the most curious: