- PVSM.RU - https://www.pvsm.ru -
Почему мы любим спортивное программирование и почему Вам тоже стоит его полюбить.

Спортивное программирование объединяет турниры самого разного уровня — от школьных и студенческих олимпиад до финалов чемпионата мира. Крупнейшие международные компании организовывают свои контесты и выступают спонсорами авторитетных соревнований вроде ACM-ICPC [1]. В нашей команде работают четыре чемпиона мира по программированию, и уже в четвёртый раз мы совместно с Codeforces [2] проводим VK Cup [3] — собственный турнир ВКонтакте.

Управляющий директор ВКонтакте Андрей Рогозов, основатель Codeforces Михаил Мирзаянов с победителями и призёрами VK Cup 2017
Часто всё начинается ещё со школы: олимпиады по информатике, студенческие соревнования, а потом и этапы международных чемпионатов. Спортивное программирование требует, в первую очередь, много и изобретательно думать, а не действовать по какому-то стандартному шаблону. Несмотря на это, умение решать олимпиадные задачи тоже нужно тренировать. Сборы, лекции, прорешивание бесконечных наборов задач — всё это в чём-то напоминает подготовку обычных атлетов.
Если Вы уже избрали другой профессиональный путь, не стоит огорчаться. Заглянуть в мир спортивного программирования можно и более простым способом.
На платформе Codeforces любой желающий может попробовать свои силы в решении задач разного уровня сложности. За каждую решенную в рамках рейтинговых раундов задачу участник получает баллы. На основании этих баллов участники раундов ранжируются и получают рейтинг [4]. После окончания раунда можно прочитать разбор решения, если не удалось найти его самостоятельно. Подборка задач за годы существования проекта скопилась впечатляющая, смотрите сами [5].
Уверен, что соревнования по программированию — увлекательный и эффективный способ научиться кодить, разобраться в структурах данных и выработать алгоритмическое . Пробуйте участвовать, раунды на Codeforces открыты для всех и проходят каждую неделю. Наша цель — предложить интересные задачи для каждого участника!
Михаил Мирзаянов, основатель Codeforces
Регламент проведения турниров может различаться в деталях, но общие принципы сохраняются. Обычно участникам отводится строго ограниченное время, сами задачи могут быть ранжированы по «стоимости» в зависимости от уровня сложности, а решения оцениваются с помощью набора готовых тестов. Самый популярный язык спортивного программирования — C++, хотя бывают и исключения. Например, на одном из раундов VK Cup 2017 [7] нужно было решить каждую задачу на отдельном языке.
Соревнования могут быть личными и командными, с ограничениями по возрасту участников и без. У турнира может быть определённая тематика — например, AI, стратегии для биржи или классические алгоритмы. Поставленная задача может заключаться во взломе удалённого сервера или в создании нейросети для хороших результатов на синтетическом датасете.
Создание задач — отдельное искусство, которое требует от автора не меньшей подготовки, чем у самого участника. Победители прошлых лет часто принимают участие в написании задач для нового турнира. У хорошей задачи есть характерные свойства:
Хотя опытные участники соревнований видели уже тысячи разных задач и редко запоминают их в деталях, авторы стараются добавить живое описание проблемы. В архиве Codeforces попадаются задачи про пылкий поток любви, «фибоначчиеватость» и хипстера Васю. Как такое пропустить?
Победителей престижных соревнований хотят заполучить к себе в штат самые известные IT-компании. Случается, что предложение о работе ждёт участника ещё до подведения итогов контеста.
Это неудивительно. Помимо очевидного (такие люди — умные), опыт в спортивном программировании во многих случаях даст преимущество разработчику. Он не боится сложностей, потому что привык постоянно иметь дело с нетривиальными задачами. Он умеет быстро принимать решения в непростых ситуациях и эффективно использовать все имеющиеся ресурсы.
Конечно, не во всех отраслях индустрии навыки такого разработчика будут использованы по максимуму. Отличное знание фундаментальных алгоритмов и умение выбирать эффективные структуры данных позволяют привлекать лучших из лучших к разработке высоконагруженных сложных систем, где они могут проявить себя в полной мере.
Это относится и к нам — почти все С-разработчики ВКонтакте принимали участие в соревнованиях. Мы используем самописные базы данных, созданные талантливыми программистами, которые не раз побеждали в самых престижных чемпионатах, включая ACM-ICPC.

Чемпионы ACM-ICPC 2014 — Егор Суворов, Дмитрий Егоров, Павел Кунявский. Тренер Андрей Лопатин. Двое участников этой команды сейчас работают ВКонтакте.
ВКонтакте всегда поддерживал это направление: мы спонсировали обучение олимпиадному программированию в СПбГУ, помогали организовывать Летнюю компьютерную школу, сделали свой вклад в создание Codeforces. Следующим закономерным шагом стала организация собственного турнира.
История VK Cup началась в 2012 году с первого личного состязания. Сейчас кубок проходит в формате турнира для команд из двух человек. Возраст участников ограничен — не младше 14 и не старше 23 лет.

Финал VK Cup 2017 в штабе ВКонтакте
С марта по июль участники решали задачи отборочных раундов [8]. Из 2736 команд, принявших участие в квалификации, до финала дошли лишь 20 лучших. Финал чемпионата традиционно проводится в штабе ВКонтакте, Доме Зингера на Невском проспекте. Об итогах VK Cup 2017 мы рассказали в этой статье [9].
Мы будем ждать Вас на VK Cup 2018. И призываем попробовать свои силы в других открытых турнирах:
— Facebook Hacker Cup [10]
— Google Code Jam [11]
— AtCoder [12]
— IPSC [13]
— Topcoder Open [14]
— deadline24 [15]
— SnackDown [16]
— Russian Code Cup [17]
— Яндекс.Алгоритм [18]
Автор: dmitryegorov
Источник [19]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/vkontakte/260440
Ссылки в тексте:
[1] ACM-ICPC: https://icpc.baylor.edu/
[2] Codeforces: http://codeforces.com
[3] VK Cup: https://vk.com/vkcup
[4] рейтинг: http://codeforces.com/ratings
[5] смотрите сами: http://codeforces.com/problemset
[6] мышление: http://www.braintools.ru
[7] на одном из раундов VK Cup 2017: http://codeforces.com/blog/entry/51418
[8] отборочных раундов: http://codeforces.com/vkcup2017
[9] в этой статье: https://vk.com/blog/vk-cup-2017
[10] Facebook Hacker Cup: http://facebook.com/hackercup/
[11] Google Code Jam: https://code.google.com/codejam/
[12] AtCoder: https://atcoder.jp/
[13] IPSC: https://ipsc.ksp.sk/
[14] Topcoder Open: https://tco17.topcoder.com/
[15] deadline24: https://www.deadline24.pl/
[16] SnackDown: https://www.codechef.com/snackdown/2017
[17] Russian Code Cup: http://www.russiancodecup.ru/ru/
[18] Яндекс.Алгоритм: https://contest.yandex.ru/algorithm2017/
[19] Источник: https://habrahabr.ru/post/333024/
Нажмите здесь для печати.