Код высших достижений

в 7:55, , рубрики: ACM ICPC, vk cup, Блог компании ВКонтакте, Вконтакте, Спортивное программирование

Почему мы любим спортивное программирование и почему Вам тоже стоит его полюбить.

image

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

image
Управляющий директор ВКонтакте Андрей Рогозов, основатель Codeforces Михаил Мирзаянов с победителями и призёрами VK Cup 2017

Откуда берутся чемпионы?

Часто всё начинается ещё со школы: олимпиады по информатике, студенческие соревнования, а потом и этапы международных чемпионатов. Спортивное программирование требует, в первую очередь, много и изобретательно думать, а не действовать по какому-то стандартному шаблону. Несмотря на это, умение решать олимпиадные задачи тоже нужно тренировать. Сборы, лекции, прорешивание бесконечных наборов задач — всё это в чём-то напоминает подготовку обычных атлетов.

Если Вы уже избрали другой профессиональный путь, не стоит огорчаться. Заглянуть в мир спортивного программирования можно и более простым способом.

На платформе Codeforces любой желающий может попробовать свои силы в решении задач разного уровня сложности. За каждую решенную в рамках рейтинговых раундов задачу участник получает баллы. На основании этих баллов участники раундов ранжируются и получают рейтинг. После окончания раунда можно прочитать разбор решения, если не удалось найти его самостоятельно. Подборка задач за годы существования проекта скопилась впечатляющая, смотрите сами.

Уверен, что соревнования по программированию — увлекательный и эффективный способ научиться кодить, разобраться в структурах данных и выработать алгоритмическое мышление. Пробуйте участвовать, раунды на Codeforces открыты для всех и проходят каждую неделю. Наша цель — предложить интересные задачи для каждого участника!

Михаил Мирзаянов, основатель Codeforces

Турниры и задачи

Регламент проведения турниров может различаться в деталях, но общие принципы сохраняются. Обычно участникам отводится строго ограниченное время, сами задачи могут быть ранжированы по «стоимости» в зависимости от уровня сложности, а решения оцениваются с помощью набора готовых тестов. Самый популярный язык спортивного программирования — C++, хотя бывают и исключения. Например, на одном из раундов VK Cup 2017 нужно было решить каждую задачу на отдельном языке.

Соревнования могут быть личными и командными, с ограничениями по возрасту участников и без. У турнира может быть определённая тематика — например, AI, стратегии для биржи или классические алгоритмы. Поставленная задача может заключаться во взломе удалённого сервера или в создании нейросети для хороших результатов на синтетическом датасете.

Создание задач — отдельное искусство, которое требует от автора не меньшей подготовки, чем у самого участника. Победители прошлых лет часто принимают участие в написании задач для нового турнира. У хорошей задачи есть характерные свойства:

  1. Её можно решить.
  2. Её можно решить в отведённое время.
  3. Для проверки решения можно создать набор тестов, на которых правильное решение будет работать, а неправильное — выдавать ошибку (или не укладываться в ограничения по времени выполнения и объёму памяти).
  4. Она интересная. Олимпиадные задачи не решаются «в лоб», и даже если за условиями проглядывает какой-то фундаментальный алгоритм, придётся как следует подумать, чтобы понять, как именно его здесь применить.

Хотя опытные участники соревнований видели уже тысячи разных задач и редко запоминают их в деталях, авторы стараются добавить живое описание проблемы. В архиве Codeforces попадаются задачи про пылкий поток любви, «фибоначчиеватость» и хипстера Васю. Как такое пропустить?

После победы

Победителей престижных соревнований хотят заполучить к себе в штат самые известные IT-компании. Случается, что предложение о работе ждёт участника ещё до подведения итогов контеста.

Это неудивительно. Помимо очевидного (такие люди — умные), опыт в спортивном программировании во многих случаях даст преимущество разработчику. Он не боится сложностей, потому что привык постоянно иметь дело с нетривиальными задачами. Он умеет быстро принимать решения в непростых ситуациях и эффективно использовать все имеющиеся ресурсы.

Конечно, не во всех отраслях индустрии навыки такого разработчика будут использованы по максимуму. Отличное знание фундаментальных алгоритмов и умение выбирать эффективные структуры данных позволяют привлекать лучших из лучших к разработке высоконагруженных сложных систем, где они могут проявить себя в полной мере.

Это относится и к нам — почти все С-разработчики ВКонтакте принимали участие в соревнованиях. Мы используем самописные базы данных, созданные талантливыми программистами, которые не раз побеждали в самых престижных чемпионатах, включая ACM-ICPC.

image
Чемпионы ACM-ICPC 2014 — Егор Суворов, Дмитрий Егоров, Павел Кунявский. Тренер Андрей Лопатин. Двое участников этой команды сейчас работают ВКонтакте.

VK Cup

ВКонтакте всегда поддерживал это направление: мы спонсировали обучение олимпиадному программированию в СПбГУ, помогали организовывать Летнюю компьютерную школу, сделали свой вклад в создание Codeforces. Следующим закономерным шагом стала организация собственного турнира.

История VK Cup началась в 2012 году с первого личного состязания. Сейчас кубок проходит в формате турнира для команд из двух человек. Возраст участников ограничен — не младше 14 и не старше 23 лет.

image
Финал VK Cup 2017 в штабе ВКонтакте

С марта по июль участники решали задачи отборочных раундов. Из 2736 команд, принявших участие в квалификации, до финала дошли лишь 20 лучших. Финал чемпионата традиционно проводится в штабе ВКонтакте, Доме Зингера на Невском проспекте. Об итогах VK Cup 2017 мы рассказали в этой статье.

Хочу участвовать!

Мы будем ждать Вас на VK Cup 2018. И призываем попробовать свои силы в других открытых турнирах:

Facebook Hacker Cup
Google Code Jam
AtCoder
IPSC
Topcoder Open
deadline24
SnackDown
Russian Code Cup
Яндекс.Алгоритм

Автор: dmitryegorov

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js