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

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

    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
    Яндекс.Алгоритм
    ВКонтакте 86,87
    Компания
    Поделиться публикацией
    Похожие публикации
    Комментарии 0

    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

    Самое читаемое