<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/">
  <channel>
    <language>ru</language>
    <title>Олимпиадное программирование</title>
    <description>Если вас вдохновляют олимпиады по программированию, то здесь вы сможете прорешать примеры задач с крупнейших соревнований и подготовиться к участию в них.</description>
    <link>https://tproger.ru/tag/competitive-programming</link>
    <atom:link href="https://tproger.ru/tag/competitive-programming/feed" rel="self" type="application/rss+xml"/>
    <lastBuildDate>Fri, 25 Sep 2026 01:19:02 GMT</lastBuildDate>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>12</sy:updateFrequency>
    <image>
      <title>Олимпиадное программирование</title>
      <link>https://tproger.ru</link>
      <url>https://tproger.ru/apple-touch-icon.png</url>
    </image>
    <item>
      <title>Gemini с режимом Deep Think впервые получил «золото» на Международной математической олимпиаде</title>
      <link>https://tproger.ru/news/gemini-s-rezhimom-deep-think-vpervye-poluchil--zoloto--na-mezhdunarodnoj-matematicheskoj-olimpiade</link>
      <comments>https://tproger.ru/news/gemini-s-rezhimom-deep-think-vpervye-poluchil--zoloto--na-mezhdunarodnoj-matematicheskoj-olimpiade?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Даровская Маша]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/gemini-s-rezhimom-deep-think-vpervye-poluchil--zoloto--na-mezhdunarodnoj-matematicheskoj-olimpiade</guid>
      <description><![CDATA[<p>Продвинутая версия Gemini от Google DeepMind завоевала золотую медаль на IMO 2025, решив 5 из 6 задач. Впервые модель на естественном языке прошла официальную проверку жюри олимпиады — и доказала, что способна рассуждать, как лучшие молодые математики планеты.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/gemini-s-rezhimom-deep-think-vpervye-poluchil--zoloto--na-mezhdunarodnoj-matematicheskoj-olimpiade">Gemini с режимом Deep Think впервые получил «золото» на Международной математической олимпиаде</a>»</p>]]></description>
      <category><![CDATA[Математика и теория вероятностей]]></category>
      <category><![CDATA[Олимпиадное программирование]]></category>
      <category><![CDATA[Новости]]></category>
      <category><![CDATA[Машинное обучение]]></category>
      <category><![CDATA[Google]]></category>
      <category><![CDATA[Нейронные сети]]></category>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[Анализ данных]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 25 Jul 2025 12:25:37 GMT</pubDate>
      <content:encoded><![CDATA[<p>Google DeepMind официально <a href="https://deepmind.google/discover/blog/advanced-version-of-gemini-with-deep-think-officially-achieves-gold-medal-standard-at-the-international-mathematical-olympiad/">подтвердил</a>: продвинутая версия модели Gemini с режимом Deep Think впервые <a href="https://imo2025.au/wp-content/uploads/2025/07/IMO-2025_ClosingDayStatement-19072025.pdf">набрала</a> 35 баллов из 42 возможных на Международной математической олимпиаде (IMO) — и получила золотую медаль. Это первый случай, когда AI-система показала результат на уровне лучших молодых математиков мира.</p><p>Международная математическая олимпиада (ММО) – самое престижное в мире соревнование для молодых математиков, проводится ежегодно с 1959 года. Каждую страну представляют шесть лучших математиков, не имеющих высшего образования, которые соревнуются в решении шести исключительно сложных задач по алгебре, комбинаторике, геометрии и теории чисел. Медали вручаются лучшим участникам, при этом только лишь около 8% получают золотую медаль.</p><p>В прошлом году объединённые системы AlphaProof и AlphaGeometry 2 от Google DeepMind <a href="https://deepmind.google/discover/blog/ai-solves-imo-problems-at-silver-medal-level/">достигли серебряного стандарта</a> , решив четыре из шести задач и набрав 28 баллов. А вычисления заняли 2,5 дня.</p><figure><img src="https://media.tproger.ru/user-uploads/116654/2025-07-25/f62947bd-f4ed-4fdd-bdfd-042bb9bde3a0.png" alt="" /></figure><h2>🤖 Зачем ИИ пошёл на олимпиаду?</h2><p>IMO — не соревнование по шаблонам. Участники решают шесть задач за 4,5 часа по алгебре, геометрии, комбинаторике и теории чисел, где даже формулировки требуют нетривиального понимания. Каждую страну представляют шестеро лучших школьников, отобранных годами тренировок. Google DeepMind решила пять задач из шести.</p><p>В 2024 году системы AlphaGeometry и AlphaProof решали задачи IMO, но требовали ручного перевода между формальным языком и естественным. В этом году Gemini Deep Think работал end-to-end: понимал условие задачи на естественном языке, сам генерировал доказательства и укладывался в лимит времени.</p><h2>🧠 Как Gemini научили мыслить по-олимпиадному?</h2><p>Gemini работал в режиме Deep Think — это улучшенный pipeline reasoning’а, который:</p><ul><li>исследует параллельно несколько возможных стратегий доказательства;</li><li>учится на огромном датасете реальных решений IMO;</li><li>строит цепочки логических рассуждений, не опираясь на формальные языки;</li><li>использует обучение с подкреплением и инструкции с мета-наставлениями;</li><li>способен превращать язык в структуру — и обратно;</li><li>использует многошаговые рассуждения для решения задач и доказательства теорем.</li></ul><p>По сути, это уже не просто языковая модель, а когнитивный ассистент, умеющий строить гипотезы, опровергать и доказывать — почти как человек.</p><p>«Решения Gemini были ясными, точными и простыми для понимания. Это один из самых впечатляющих AI-дебютов за всю историю Олимпиады».</p><p>Профессор Грегор Долинар, президент Международной математической олимпиады</p><h2>Почему это важно?</h2><ul><li>AI выходит за пределы генерации текста. Он решает задачи, требующие творческого абстрактного мышления.</li><li>Новая парадигма обучения. Модель учится не только на данных, но и на методах решения.</li><li>Фундаментальная математика — следующий рубеж. После кода, картинок и рецептов ИИ начинает осваивать поле, где обычно побеждают гении с олимпиадным складом ума.</li></ul><h2>Что дальше?</h2><p>Google DeepMind уже готовит открытый доступ к Gemini Deep Think для математиков и подписчиков AI Ultra. Разработчики уверены: следующий шаг — универсальный ассистент-исследователь, который поможет справиться с нерешёнными задачами науки.</p><p>Комментарий от Tproger:</p><p>ИИ теперь не «просто решает задачи». Это пример того, как новые архитектуры reasoning + RL дают результат в задачах, с которыми не способно справиться большинство людей.</p>]]></content:encoded>
    </item>
    <item>
      <title>МТС открыла прием заявок на ИТ-олимпиаду с главным призом 3 млн рублей</title>
      <link>https://tproger.ru/articles/mts-otkryla-priem-zayavok-na-it-olimpiadu-s-glavnym-prizom-3-mln-rublej-erid-ljn8kucxw</link>
      <comments>https://tproger.ru/articles/mts-otkryla-priem-zayavok-na-it-olimpiadu-s-glavnym-prizom-3-mln-rublej-erid-ljn8kucxw?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[МТС]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/mts-otkryla-priem-zayavok-na-it-olimpiadu-s-glavnym-prizom-3-mln-rublej-erid-ljn8kucxw</guid>
      <description><![CDATA[<p>До 5 октября вы можете подать заявку на участие во всероссийской ИТ-олимпиаде True Tech Champ. Победителей ждут денежные призы.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/mts-otkryla-priem-zayavok-na-it-olimpiadu-s-glavnym-prizom-3-mln-rublej-erid-ljn8kucxw">МТС открыла прием заявок на ИТ-олимпиаду с главным призом 3 млн рублей</a>»</p>]]></description>
      <category><![CDATA[Олимпиадное программирование]]></category>
      <category><![CDATA[Карьера]]></category>
      <category><![CDATA[Соревнования]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 08 Sep 2023 13:00:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>ИТ-олимпиада<b> True Tech Champ </b>— масштабное событие на российском ИТ-рынке с разнообразной образовательной и развлекательной программой. Это фестиваль программирования, главная цель которого не только открыть таланты, но и создать новое ИТ-комьюнити в стране. Принять участие смогут как школьники и студенты, так и действующие специалисты.</p><h2>Как будет проходить True Tech Champ</h2><p>Олимпиада True Tech Champ включает два потока для разных возрастных категорий. В первый трек приглашаются учащиеся старших классов от 14 лет и студенты профильных технических вузов. Участникам предстоит решить олимпиадные задания и продемонстрировать знание алгоритмического программирования.</p><p>Победители младшей группы получат призы и денежные награды: за первое место — 1 млн рублей, за второе — 500 тыс. рублей, за третье место — 250 тыс. рублей.</p><p>Во втором треке старшей категории будут соревноваться ИТ-специалисты разного уровня и стека. Участникам предстоит решить технические задания и пройти испытания по программированию на скорость на пяти наиболее популярных языках в МТС: Java, Go, Python, С++, C#.</p><p>В этой категории экосистема определит несколько победителей и также вручит денежные призы: 3 млн рублей за первое место, 1,5 млн рублей за второе, и по 500 тыс. рублей двум обладателям третьего места.</p><h2>Не только ИТ-олимпиада, но и обширная образовательная программа</h2><p>МТС окажет образовательную поддержку участникам отборочных испытаний. Во время онлайн-этапа олимпиады они попадут в закрытый Telegram-канал, где будут публиковаться обучающие и развлекательные материалы. Например, в треке для школьников и студентов в сентябре пройдёт курс по алгоритмическому программированию от экспертов МТС. А в октябре в канале будет опубликован воркшоп по стратегии решения задач. Участники узнают лайфхаки от экспертов экосистемы, разберут несколько вариантов решения и получат тренировочные задания для подготовки к финалу.</p><p>Для действующих ИТ-специалистов образовательная поддержка от МТС будет включать курс по майнд-фитнесу с доступом к онлайн-тренировкам на все когнитивные функции: нейропластичность, память, внимание, мышление и креативность. Также участникам предоставят доступ к комплексу специальных заданий для прокачки работы мозга. Кроме того, эксперты МТС проведут несколько митапов, выступлений и мастер-классов.</p><blockquote>Олимпиада True Tech Champ должна стать ивентом нового времени. Фестиваль программирования — масштабное событие для тех, кто любит технологии, яркий праздник, который привлечёт лучших специалистов в ИТ и даст хороший старт талантливым молодым кадрам. Мы хотим провести действительно запоминающееся мероприятие на российском ИТ-рынке и сделаем для этого все возможное</blockquote><p>Приём заявок на участие в олимпиаде продлится <b>до 5 октября</b>, регистрация доступна на <a href="https://truetechchamp.ru/">официальном сайте мероприятия</a>.</p><p><i>Реклама ПАО «МТС» LjN8KUCxW</i></p>]]></content:encoded>
    </item>
    <item>
      <title>Введение в спортивное программирование: уникальная сфера в IT-индустрии</title>
      <link>https://tproger.ru/articles/vvedenie-v-sportivnoe-programmirovanie-unikalnaya-sfera-v-it-industrii</link>
      <comments>https://tproger.ru/articles/vvedenie-v-sportivnoe-programmirovanie-unikalnaya-sfera-v-it-industrii?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Synergy Academy]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/vvedenie-v-sportivnoe-programmirovanie-unikalnaya-sfera-v-it-industrii</guid>
      <description><![CDATA[<p>Рассказали о том, что такое спортивное программирование, как проходят соревнования, какие используются языки и задачи.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/vvedenie-v-sportivnoe-programmirovanie-unikalnaya-sfera-v-it-industrii">Введение в спортивное программирование: уникальная сфера в IT-индустрии</a>»</p>]]></description>
      <category><![CDATA[Олимпиадное программирование]]></category>
      <category><![CDATA[Соревнования]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 14 Jul 2023 10:50:41 GMT</pubDate>
      <content:encoded><![CDATA[<p>Спортивное программирование является популярным направлением в IT-сфере, так как оно востребовано в различных сферах жизни, начиная от разработки программного обеспечения и создания алгоритмов для решения сложных задач до повышения производительности компьютерных систем. Тысячи разработчиков со всего мира участвуют в соревнованиях по спортивному программированию, проявляя свои умения и стремясь к достижению высоких результатов.</p><p>О том, что такое спортивное программирование, как проходят соревнования и о многом другом рассказал Алексей Пырко, преподаватель Synergy Academy, backend-разработчик и владелец Telegram-канала <a href="https://t.me/ifka_channel">«ИФКА компьютерная школа»</a>.</p><p>Алексей еще с начальной школы увлекался олимпиадами по математике и принимал активное участие в них. Когда он обучался в 7 классе, в его гимназию пришел тренер по спортивному программированию. Алексей не упустил возможность и решил попробовать новое для себя направление. Стоя перед выбором между физикой, математикой и программированием, он решил, что информатика представляет более перспективную сферу и, как выяснилось, он не ошибся. Участие в олимпиадах по информатике открыло возможность поступить практически в любой университет без экзаменов и дало сильный старт для будущей карьеры.</p><h2>Что такое спортивное программирование</h2><p>История спортивного программирования начинается в 1970-х годах, когда студенты, преподаватели и представители бизнеса провели первое соревнование по программированию в Техасском университете (США). За короткое время идея проведения подобного соревнования приобрела популярность и вскоре турниры стали проводить ежегодно, продолжая свою традицию и постоянно развиваясь.</p><p>В 1995 году российские команды впервые приняли участие в данном состязании, после чего неоднократно становились победителями и призерами. И именно Россия стала первой страной в мире, которая официально признала спортивное программирование видом спорта.</p><p>Спортивное программирование — это вид соревнований, где программисты решают алгоритмические задания с помощью написания кода.</p><p>Главной целью участия в соревнованиях по спортивному программированию является решение задач в ограниченное время с минимальным количеством неправильных попыток. На олимпиадах участникам предлагается в течение пяти часов решить 4-10 алгоритмических задач.</p><p>Для успешного старта в спортивном программировании необходимы хорошие арифметические навыки, которые можно развить, решая олимпиадные и продвинутые задачи.</p><p>Как и в любом виде спорта, для достижения хороших результатов в спортивном программировании важны регулярные тренировки и упорство. Если вы только начинаете программировать, следует начать с решения задач на более простом языке, например, Python, а затем постепенно переходить на C++.</p><h2>Какие задачи решают</h2><p>Спортивное программирование предлагает участникам широкий спектр заданий, связанных с оптимизацией и использованием различных структур данных. Например:</p><h3>Задачи на графы</h3><p>Участникам нужно реализовать алгоритмы для работы с графами, такие как обходы в глубину и ширину, поиск минимального пути или поиск кратчайшего пути в графе.</p><h3>Задачи на структуры данных</h3><p>Игрокам требуется написать код с использованием структур данных, например, расположить элементы массива в обратном порядке с использованием стека или найти минимальное/максимальное значение в заданном диапазоне массива с помощью дерева отрезков для эффективного выполнения задачи.</p><h3>Задачи на теорию чисел</h3><p>Конкурсанты должны реализовать алгоритмы для решения математических задач, таких как нахождение НОДа (наибольшего общего делителя) или простых чисел.</p><h3>Задачи на динамическое программирование</h3><p>Участникам предлагается решить оптимизационную задачу, разбивая ее на подзадачи и используя результаты предыдущих подзадач для решения текущей.</p><p>В соревнованиях и олимпиадах эти задачи усложняются и добавляются дополнительные условия, например, увеличение количества задач или уменьшение времени на решение заданий, что требует от участников креативности и гибкости ума.</p><h2>Какое языки используют</h2><p>В соревнованиях по спортивному программированию широко используются следующие языки программирования:</p><h3>C++</h3><p>На турнирах большинство программистов предпочитают использовать язык C++ из-за его высокой производительности и широких возможностей для написания кода. Несмотря на то, что данный язык является сложным для изучения, он может дать значительное преимущество в соревнованиях.</p><h3>Java</h3><p>Java обладает простым синтаксисом и множеством библиотек, что делает его удобным в использовании при решении задач.</p><h3>Python</h3><p>Python имеет понятный и читаемый синтаксис, что делает его хорошим выбором для участников. Однако он может быть немного медленнее по сравнению с C++ или Java.</p><h3>Kotlin</h3><p>Kotlin — относительно новый язык программирования, который активно используется в соревнованиях, особенно в среде Android-разработки. Он предоставляет множество инструментов, что делает его удобным для применения.</p><p>Также существуют и другие языки программирования, которые также могут быть использованы в соревнованиях по спортивному программированию, но перечисленные выше — наиболее распространенные и популярные. Использование определенного языка программирования зависит от предпочтений участников и доступности языков в рамках конкретного соревнования.</p><h2>Какие навыки и знания развивает спортивное программирование</h2><p>Участие в соревнованиях по спортивному программированию и регулярные тренировки помогают развить широкий спектр навыков и знаний. Вот некоторые из них.</p><h3>Алгоритмическое мышление</h3><p>Постоянное участие в соревнованиях помогает развить структурированное аналитическое мышление, что является ключевым навыком во всех областях программирования.</p><h3>Работа в команде</h3><p>Многие соревнования спортивного программирования предполагают участие с командой. Благодаря этому есть возможность научиться сотрудничать с товарищами по команде, коммуницировать, искать компромисс и вместе решать задачи.</p><h3>Управление временем</h3><p>Соревнования по спортивному программированию требуют быстрого решения задач в ограниченные сроки. Игроки учатся эффективно планировать и организовывать отведенное на решение задач время.</p><h3>Стрессоустойчивость</h3><p>Олимпиады по спортивному программированию интенсивные и требовательные. Участники развивают способность работать под давлением и принимать решения в условиях ограниченного времени.</p><p>Данные навыки помогут при трудоустройстве, так как многие известные IT-компании проводят не только техническое собеседование, проверяя знания языков программирования и инструментов разработки, но также стрессоустойчивость, способность оперативно управлять временем и умение работать в команде.<b></b></p><h2>Как проходят соревнования</h2><p>Существуют две основные формы проведения соревнований по спортивному программированию: командный и индивидуальный.</p><p>Командная форма соревнований предполагает участие нескольких игроков, например два специалиста по алгоритмам и структурам данных и эксперт по дискретной математике или два эксперта по дискретной математике и один программист. Каждый участник вносит свой вклад в решение задач, предлагая идеи, разрабатывая алгоритмы и код. Побеждает та команда, которая решит больше всего заданий или наберет наибольшее количество баллов.</p><p>При индивидуальной форме каждый участник работает самостоятельно над решением задач. Конкурсантам предлагается набор задач, и они должны решить их в заданное время, используя навыки программирования. Побеждает тот участник соревнования, который решит наибольшее количество задач или наберет наибольшее количество баллов.</p><p>Отличие между командной и индивидуальной формами заключается в том, как участники работают и соревнуются. В командной важно уметь эффективно сотрудничать и коммуницировать с другими членами команды, а также делиться задачами для достижения максимального результата. В индивидуальной участник должен полностью полагаться на собственные навыки и опыт.</p><p>Помимо отличий в форме, также существуют и различные форматы проведений соревновании со своими уникальными правилами. В настоящее время наиболее распространены три основных формата: ICPC, IOI и Codeforces/TopCoder</p><p>Ниже мы рассмотрим подробнее каждый формат соревнований.</p><h3>IOI (International Olympiad in Informatics)</h3><p>Олимпиада проводится на протяжении двух дней и включает в себя шесть алгоритмических задач — по три на каждый день. Каждому заданию отводится пять часов на решение. Они должны быть написаны на языке программирования C++. Согласно правилам IOI, участникам запрещается использовать любую литературу или общаться с другими конкурсантами. Задачи могут быть достаточно объемными и иногда даже не поддающимися решению.</p><h3>Codeforces/TopCoder</h3><p>Codeforces/TopCoder — формат крупных онлайн-платформ для проведения соревнований по спортивному программированию. Обычно игрокам предлагают решить пять задач за два-три часа. Здесь пользователи решают нестандартные задания, развивают свои навыки, проходят курсы и интенсивы. Победителям крупных соревнований вручают ценные призы, а также между участниками, занимающие первые места в таких турнирах формируется рейтинг. Это дает возможность привлечь внимание некоторых работодателей из крупных компаний со всего мира.</p><h3>ICPC (The International Collegiate Programming Contest)</h3><p>Данный формат соревнований отличается от предыдущих:</p><ul><li>участвуют целыми командами,</li><li>большее число заданий,</li><li>задания более разнообразные.</li></ul><p>За пять часов командам предстоит решить от 8 до 15 задач по спортивному программированию в зависимости от этапа соревнования. Для выполнения заданий можно использовать языки C, C ++, Java, Ada, Python или Kotlin. Одной из особенностей ICPC является то, что у каждой команды имеется всего один компьютер. Это делает решение задач более сложным: чтобы победить, необходимо быть не только хорошим программистом, но и уметь работать в команде.</p><h2>Зачем участвовать в соревнованиях</h2><p>Участие в алгоритмических соревнованиях аналогично участию в шахматных турнирах. На крупных соревнованиях, организованных IT-компаниями, участники имеют возможность выиграть большие денежные призы. Победители разных годов получали от 100 тысяч до 1 000 000 млн. рублей. Также предоставляется возможность привлечь к себе внимание рекрутеров топовых российских и международных компаний. Например, призеры полуфинала ICPC и VK Cup регулярно получают предложения от рекрутеров «Яндекса».</p><p>Большие IT-компании, такие как «Яндекс», «Google» и другие, ищут не только разработчиков, способных написать «чистый» код, но и тех, кто предлагает нестандартные способы выполнения заданий. Поэтому после проведения интервью и вступительных тестов выбирают тех, кто может создать и реализовать оптимальные решения нескольких сложных задач за ограниченное время. Помимо этого, они также оценивают соискателя по его рейтингу участия в спортивных соревнованиях. Этот показатель может служить хорошим преимуществом, которое увеличивает шансы на успешное трудоустройство или получение стажировки.<b></b></p><h2>Советы для начинающих спортивных программистов</h2><p>Также существует несколько полезных советов для начинающих спортивных программистов. Расскажем про основные.</p><h3>Математические знания</h3><p>Изучите основные математические понятия, такие как арифметика, алгебра и геометрия. Эти знания будут полезны при работе с формулами, уравнениями и моделями. Также необходима теоретическая база алгоритмов и структур данных.</p><h3>Хорошие знания языков программирования</h3><p>Если вы только начинаете программировать, вы можете начать решать задачи на более простом языке, например, на Python и со временем переходить на C++. Теоретическая база также имеет значение, поэтому необходимо постепенно развивать свои навыки и знания в области языков программирования.</p><h3>Регулярные тренировки и упорство</h3><p>Чем больше времени и усилий вы вкладываете в написание кода, тем лучше становитесь в этом деле. Регулярные тренировки позволят вам поддерживать свои навыки на нужном уровне.</p><h2>Подводим итоги</h2><p>Спортивное программирование представляет собой уникальную сферу в IT-индустрии, объединяющую в себе компьютерную сферу и командную работу. Участие в соревнованиях и тренировки — это лучший способ развить структурное аналитическое мышление, необходимое для быстрого погружения в любую из областей программирования. Данные олимпиады предоставляют участникам шанс проявить свой потенциал, получить работу в крупных IT-компаниях, повысить свой профессиональный опыт и создать собственную стартовую площадку для участия в проектах и конкурсах в будущем.</p>]]></content:encoded>
    </item>
    <item>
      <title>JetBrains анонсировала новые стипендии для российских студентов. Их получат участники международных олимпиад школьников</title>
      <link>https://tproger.ru/news/jetbrains-anonsirovala-novye-stipendii-dlja-rossijskih-studentov-ih-poluchat-uchastniki-mezhdunarodnyh-olimpiad-shkolnikov</link>
      <comments>https://tproger.ru/news/jetbrains-anonsirovala-novye-stipendii-dlja-rossijskih-studentov-ih-poluchat-uchastniki-mezhdunarodnyh-olimpiad-shkolnikov?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Андрей Борисов]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/jetbrains-anonsirovala-novye-stipendii-dlja-rossijskih-studentov-ih-poluchat-uchastniki-mezhdunarodnyh-olimpiad-shkolnikov</guid>
      <description><![CDATA[<p>JetBrains анонсировала новые стипендии для участников международных олимпиад школьников. Талантливым студентам будут платить до 25 тысяч в месяц.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/jetbrains-anonsirovala-novye-stipendii-dlja-rossijskih-studentov-ih-poluchat-uchastniki-mezhdunarodnyh-olimpiad-shkolnikov">JetBrains анонсировала новые стипендии для российских студентов. Их получат участники международных олимпиад школьников</a>»</p>]]></description>
      <category><![CDATA[Олимпиадное программирование]]></category>
      <category><![CDATA[JetBrains]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 26 Jul 2021 11:48:56 GMT</pubDate>
      <content:encoded><![CDATA[<p>Компания JetBrains <a href="https://blog.jetbrains.com/ru/blog/2021/07/26/scholarships-for-participants-of-international-science-olympiads/">анонсировала</a> новые стипендии для участников международных олимпиад по математике, физике и программированию.</p><p>JetBrains предоставляет талантливым студентам стипендии, чтобы они полностью посвящали себя учёбе, не отвлекаясь на поиски подработки.</p><h2>Кто может получить стипендию</h2><p>Дополнительные стипендии JetBrains будет выплачивать студентам бакалаврских следующих программ:</p><h4>Программы Санкт-Петербургского государственного университета (СПбГУ)</h4><ul><li><a href="https://bsse.compscicenter.ru/">Современное программирование</a>;</li><li><a href="https://math-cs.spbu.ru/bsc-math/">Математика</a>;</li><li><a href="https://maad.compscicenter.ru/">Науки о данных.</a></li></ul><h4>Программы Санкт-Петербургского филиала Высшей Школы Экономики (НИУ ВШЭ)</h4><ul><li><a href="https://spb.hse.ru/ba/appmath/">Прикладная математика и информатика</a>;</li><li><a href="https://spb.hse.ru/ba/physics/">Физика</a>.</li></ul><p>Для этого необходимо быть <b>членом сборной России</b> на одной из следующих олимпиад:</p><ul><li><a href="https://ioi2021.sg/">Международная олимпиада по информатике</a> (IOI);</li><li><a href="https://imo2021.ru/">Международная олимпиада по математике</a> (IMO);</li><li><a href="https://www.egmo.org/">Европейская математическая олимпиада для девушек</a> (EGMO);</li><li><a href="https://egoi.ch/en/">Европейская олимпиада по информатике для девушек</a> (EGOI).</li><li><a href="https://www.ipho2021.lt/">Международная олимпиада по физике</a> (IPhO).</li></ul><h2>Сколько денег будут давать</h2><h3>IOI, IMO, IPhO</h3><ul><li><b>Участникам</b> — 10 тысяч рублей в месяц.</li><li><b>Бронзовым медалистам</b> — 15 тысяч рублей в месяц.</li><li><b>Серебряным медалистам</b> — 20 тысяч рублей в месяц.</li><li><b>Золотым медалистам</b> — 25 тысяч рублей в месяц.</li></ul><h3>EGMO, EGOI (для девушек)</h3><ul><li><b>Участницам</b> — 5 тысяч рублей в месяц.</li><li><b>Бронзовым медалисткам</b> — 10 тысяч рублей в месяц.</li><li><b>Серебряным медалисткам</b> — 15 тысяч рублей в месяц.</li><li><b>Золотым медалисткам</b> — 20 тысяч рублей в месяц.</li></ul><p>Источник: <a href="https://blog.jetbrains.com/ru/blog/2021/07/26/scholarships-for-participants-of-international-science-olympiads/">Блог JetBrains</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Начался приём заявок на VK Cup 2021 с призовым фондом более 2 миллионов рублей</title>
      <link>https://tproger.ru/news/nachalsja-prijom-zajavok-na-vk-cup-2021-s-prizovym-fondom-bolee-2-millionov-rublej</link>
      <comments>https://tproger.ru/news/nachalsja-prijom-zajavok-na-vk-cup-2021-s-prizovym-fondom-bolee-2-millionov-rublej?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/nachalsja-prijom-zajavok-na-vk-cup-2021-s-prizovym-fondom-bolee-2-millionov-rublej</guid>
      <description><![CDATA[<p>Чемпионат ВКонтакте идёт по четырём направлениям — олимпиадное программирование, мобильная разработка, машинное обучение и дизайн интерфейсов.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/nachalsja-prijom-zajavok-na-vk-cup-2021-s-prizovym-fondom-bolee-2-millionov-rublej">Начался приём заявок на VK Cup 2021 с призовым фондом более 2 миллионов рублей</a>»</p>]]></description>
      <category><![CDATA[Мобильная разработка]]></category>
      <category><![CDATA[Олимпиадное программирование]]></category>
      <category><![CDATA[Машинное обучение]]></category>
      <category><![CDATA[ВКонтакте]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 16 Apr 2021 15:21:30 GMT</pubDate>
      <content:encoded><![CDATA[<p>На странице команды ВКонтакте появилась свежая запись. В ней представители соцсети объявили о начале приёма заявок на очередной чемпионат по программированию — VK Cup 2021. Его общий призовой фонд — 2,72 млн рублей.</p><figure><img src="https://media.tproger.ru/uploads/2021/04/1-28.png" alt="" /></figure><p>Сообщается, что в этом году будет представлено четыре разных направлениях: олимпиадное программирование, мобильная разработка, машинное обучение и дизайн интерфейсов. При этом во всех категориях призовых мест будет пять, а награда распределится следующим образом:</p><p><b>1 место</b> — 300 тыс рублей;</p><p><b>2 место</b> — 200 тыс рублей;</p><p><b>3 место</b> — 100 тыс рублей;</p><p><b>4 место</b> — 50 тыс рублей;</p><p><b>5 место</b> — 30 тыс рублей.</p><p>Часть пользователей уже успела возмутиться размером вознаграждения:</p><blockquote>Приз 30 000 рублей… И это приз от самой крупной социальной сети России. 395 долларов.Мне кажется, что это уж слишком мало, тем более для достаточно талантливых ребят, способных занять пятое место в таком конкурсе.</blockquote><p>Квалификационный этап продлится до 30 мая, затем идёт отборочный (с 12 по 18 июля), а затем решающий. Соответственно, заявки принимаются до 30 мая. Зарегистрироваться на чемпионате можно по <a href="https://vk.com/app5619682_-147415323#559952">ссылке</a>.</p><p>Источник: <a href="https://vk.com/vkteam?w=wall-147415323_9168">ВКонтакте</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Время размять мозги: задачка о том, как разъехаться на перекрестке</title>
      <link>https://tproger.ru/problems/crossroads-puzzle</link>
      <comments>https://tproger.ru/problems/crossroads-puzzle?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Типичный программист]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/problems/crossroads-puzzle</guid>
      <description><![CDATA[<p>Автомобили с автоматическим управлением стали основой головоломки, похожей на задания чемпионата Yandex Cup. Разбор с упором на применение алгоритмов.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/problems/crossroads-puzzle">Время размять мозги: задачка о том, как разъехаться на перекрестке</a>»</p>]]></description>
      <category><![CDATA[Олимпиадное программирование]]></category>
      <category><![CDATA[Задачи умеренной сложности]]></category>
      <category><![CDATA[Алгоритмы и структуры данных]]></category>
      <category><![CDATA[Головоломки]]></category>
      <category><![CDATA[Задачки]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 05 Oct 2020 08:32:11 GMT</pubDate>
      <content:encoded><![CDATA[<p>Если осенняя хандра застала вас еще в начале осени, то пришла пора немного взбодриться. Яндекс поделился любопытной задачей, которая не только поможет отвлечься от непогоды, но еще и проверит, насколько вы разбираетесь в мобильной разработке. Кстати, подобные задачи будут на чемпионате по программированию Yandex Cup в этом году.</p><h2>Задача</h2><p>Машины с автоматическим управлением — это круто. Так думаете не только вы, но и все сотрудники компании, в которую вам повезло устроиться. В этой компании как раз пишут софт для управления такими машинами. Для проверки и демонстрации последних достижений в офисе компании есть отдельная комната, моделирующая перекресток дорог шириной W метров и длиной H метров.</p><p>Каждая машина имеет ширину 1 и длину, не превышающую размеры перекрестка.</p><p>Одна из ситуаций, в которую частенько попадают как обычные водители, так и ИИ, банальна, но оттого не менее неприятна — пробка. Каждый водитель пытается выбраться из нее как можно быстрее, порой совершая маневры, ухудшающие ситуацию для всех окружающих. Но если бы все машины управлялись автоматикой, насколько быстрее разрешалась бы проблема? Именно на этот вопрос и должна ответить демонстрация, для которой вы должны написать код.</p><p>В начале демонстрации на перекрёсток будет помещено N машин. Для упрощения расчетов каждая машина ориентирована либо горизонтально, либо вертикально. Каждую секунду каждая из машин может переместиться на 1, если ей ничего не мешает. Пробка считается разрешенной, если на перекрестке не осталось ни одной машины. Реализуйте алгоритм, позволяющий сделать это за наименьшее количество времени.</p><ul><li>Ограничение по времени: 10 секунд.</li><li>Ограничение по памяти: 512Mb.</li><li>Ввод: стандартный ввод или input.txt.</li><li>Вывод: стандартный вывод или output.txt.</li></ul><h2>Формат ввода</h2><p>Первая строка содержит 2 числа — 0 &lt; W &lt; 13, 0 &lt; H &lt; 13. Гарантируется, что W * H ≤ 25. Вторая строка содержит число 0 ≤ N&lt; 13.<br />Следующие N строк содержат по 4 числа каждая — x1i, y1i, x2i, y2i, 0 &lt; x1, x2 ≤ W, 0 &lt; y1, y2 ≤ H — координаты левого верхнего и нижнего правого углов машины i. Гарантируется, что либо x1i = x2i, либо y1i = y2i.</p><h2>Формат вывода</h2><p>На первой строке выведите количество секунд, необходимых для очищения перекрёстка. В последующих строках выведите информацию о перемещениях машин посекундно. Каждая секунда описывается так:</p><ul><li>Количество машин, переместившихся в эту секунду.</li><li>Для каждой из двигавшихся машин — номер машины(нумерация с 1) и направление, в котором она перемещалась, ‘L’ влево, ‘R’ вправо, ‘U’ вверх и ‘D’ вниз.</li></ul><p>Обратите внимание — все движения в течение одной секунды происходят одновременно.</p><p>Задача соревновательная, и вам необязательно написать «правильное» решение, всегда находящее идеальную стратегию. Чем ближе ваш ответ к оптимальному, тем больше баллов вы получите.</p><p>Каждый тест оценивается в зависимости от размера входных данных.</p><p>За совершение невозможных движений (таких, в результате которых машины будут «наезжать» друг на друга) вы будете получать 0 баллов. Так же оценивается превышение лимита по памяти или времени исполнения и «падения» программы.</p><p>Любое корректное решение получает половину или более баллов теста. Чем ближе решение к оптимальному, тем больше будет начислено баллов.</p><p>Итоговой оценкой станет сумма баллов, полученных во всех тестах.</p>]]></content:encoded>
    </item>
    <item>
      <title>«Спортивное программирование» — настольная книга новичка + 5 советов по подготовке к соревнованиям</title>
      <link>https://tproger.ru/articles/tips-for-sport-programming</link>
      <comments>https://tproger.ru/articles/tips-for-sport-programming?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Александр Ланский]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/tips-for-sport-programming</guid>
      <description><![CDATA[<p>В этой статье собрали важные советы из книги «Спортивное программирование». Они будут крайне полезны для начинающих участников контестов.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/tips-for-sport-programming">«Спортивное программирование» — настольная книга новичка + 5 советов по подготовке к соревнованиям</a>»</p>]]></description>
      <category><![CDATA[Для начинающих]]></category>
      <category><![CDATA[Олимпиадное программирование]]></category>
      <category><![CDATA[Советы]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 01 Oct 2020 10:00:48 GMT</pubDate>
      <content:encoded><![CDATA[<p>Спортивное программирование — это состязания по решению задач на алгоритмы и отличный карьерный старт: победителей часто нанимают интернет-гиганты, такие как Amazon, Google, Facebook, VK, Яндекс и другие.</p><p>Но как победить в контесте и привлечь к себе внимание хедхантеров?</p><p>Издательство «ДМК Пресс» выпустило книгу «Спортивное программирование». Она вышла при поддержке <a href="https://vk.com/moscowicpc">Moscow Workshops</a>, <a href="https://vk.com/mailrugroup">Mail.ru Group</a> и <a href="https://vk.com/miptru">МФТИ</a> и нашего издания Tproger. Эта книга — полноценный гайд по спортивному программированию: в ней собраны теория, практика, лайфхаки и редкие темы, о которых мало кто пишет.</p><p>Авторы книги — Стивен Халим и Феликс Халим — преподают в Школе программирования Национального университета Сингапура. Они — наставники команд Сингапура, которые участвуют в соревнованиях ACM ICPC и IOI.</p><p>Книга охватывает много тем. В ней содержится более 200 упражнений и около 1500 задач. Некоторые из них аналогичны задачам, которые используются на соревнованиях мирового уровня (ACM ICPC и IOI). Книга подойдёт как новичкам, так и опытным участникам.</p><p>Издательство «ДМК Пресс» подготовило промокод для наших читателей. Подробности в конце статьи.</p><h2>Советы по подготовке к соревнованиям</h2><p>В самой книге каждый из этих советов расписан гораздо подробнее и включает в себя конкретные практики, подводные камни и советы от наставников. Мы же только кратко расскажем о каждом из них:</p><ul><li>Учитесь быстро печатать. Банально? Да. Но в соревнованиях на время каждая секунда на счету. Бывает, участники не проходят, просто опоздав с решением. И речь здесь не только о наборе текста: нужно быстро набирать и сам программный код.<br />Скорее всего, вы будете использовать IDE с автодополнением, и из этого тоже нужно выжать максимум. Уделите внимание знакам: следует легко ориентироваться, в каком регистре и на какой раскладке находятся нужные знаки.<br />Среднее значение скорости печати — 200–250 знаков в минуту, но желательно добиться лучшего показателя. Чтобы проверить скорость печати, существуют онлайн-утилиты. Для программного кода есть <a href="http://www.speedcoder.net/">тренажёр</a> с выбором языка программирования.</li><li>Оптимизируйте алгоритмы. Обычно одну и ту же задачу можно решить несколькими способами. На олимпиадном программировании вместе с заданием могут выдавать требования к программе: время выполнения и объём памяти. Перед началом разработки продумайте оптимальный для вашей задачи способ решения.<br />Стоит знать, какие функции и операции ресурсозатратны, а какие — нет. Допустим, алгоритм должен вычислять много квадратных корней и сравнивать результат с каким-то значением. Операция извлечения корня потребляет больше ресурсов, чем базовые математические операции. Так что лучше отказаться от извлечения корня и сравнивать число со значением, возведённым в квадрат. Результат выйдет таким же при меньшей нагрузке на машину.</li><li>Изучайте тонкости языков программирования. Основные языки для спортивного программирования — C++ и Java. C++ быстрый, а Java функциональна. Выбирайте язык в зависимости от задачи. Как минимум вам стоит уметь писать рабочий код на этих языках. Важно освоить как можно больше возможностей языка, чтобы использовать его эффективно, избегая костылей и велосипедов.</li><li>Тестируйте код. На олимпиадах ICPC вы получаете баллы за полностью решённые задачи. Код должен пройти все секретные тесты, разработанные под эту задачу. Хорошей практикой будет написание собственных тестов. С их помощью нужно проверить:соответствие входных и выходных данных;выдачу одних и тех же данных в случае с мультитестами;наличие краевых случаев;способность обработать большой объём данных.</li><li>Практикуйтесь. Даже если вы мастерски владеете каким-то языком, это не гарантирует успех в спортивном программировании. Постоянно решайте задачи и старайтесь превзойти себя — только так вы сможете добиться хороших результатов.<br />Можно зайти в архив <a href="https://acm.timus.ru/">Timus Online Judge</a> — крупнейший в России сборник задач по программированию с автоматической проверяющей системой. Другой отличный вариант — <a href="https://codeforces.com/">Codeforces</a>.<br />Если хотите потренироваться в спортивном программировании — заходите на <a href="https://exercism.io/">Exercism.io</a>. Там после каждой решённой задачи вы общаетесь с наставником: он поможет улучшить решение. <a href="https://acmp.ru/">acmp.ru</a> — ещё один сервис с олимпиадными задачами и встроенной системой проверки.</li></ul><p>В книге вас ждут и практические советы по решению, более сложные темы вроде декомпозиции задач и эффективных методов динамического программирования, малораспространённые темы вроде алгоритма Хопкрофта-Карпа, задачи 2-SAT и многое другое. Чтобы подробнее познакомиться с книгой и понять, какие темы она затрагивает, можно посмотреть <a href="https://dmkpress.com/files/PDF/978-5-97060-758-9.pdf">оглавление и отрывки</a>.</p><p>Специально для наших читателей издание ДМК Пресс подготовило промокод TPROGER15. Он даёт скидку 15% на покупку бумажной и электронной версии.</p>]]></content:encoded>
    </item>
    <item>
      <title>Подборка задач по спортивному программированию</title>
      <link>https://tproger.ru/problems/moscow-programming-contest-tasks</link>
      <comments>https://tproger.ru/problems/moscow-programming-contest-tasks?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Типичный программист]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/problems/moscow-programming-contest-tasks</guid>
      <description><![CDATA[<p>Исходный фрагмент статьи не содержит текста, поэтому подтвердить тему, названия, даты, числа и другие детали этого материала невозможно.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/problems/moscow-programming-contest-tasks">Подборка задач по спортивному программированию</a>»</p>]]></description>
      <category><![CDATA[Олимпиадное программирование]]></category>
      <category><![CDATA[Обучение программированию]]></category>
      <category><![CDATA[Задачки]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 08 Jun 2020 11:13:24 GMT</pubDate>
    </item>
    <item>
      <title>Гид по спортивному программированию: обзор соревнований и советы по участию в них</title>
      <link>https://tproger.ru/articles/competitive-programming-tips</link>
      <comments>https://tproger.ru/articles/competitive-programming-tips?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Типичный программист]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/competitive-programming-tips</guid>
      <description><![CDATA[<p>Какие соревнования по программированию существуют, зачем в них участвовать и как извлечь из контестов максимальную пользу для карьеры.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/competitive-programming-tips">Гид по спортивному программированию: обзор соревнований и советы по участию в них</a>»</p>]]></description>
      <category><![CDATA[Олимпиадное программирование]]></category>
      <category><![CDATA[Советы]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 06 Apr 2020 07:51:15 GMT</pubDate>
      <content:encoded><![CDATA[<p>Спортивное программирование — отличная стартовая площадка для карьеры. Кто-то после побед становится наставником и готовит других чемпионов, а кто-то устраивается в крупные IT-компании. Призёры олимпиад также работают в Google, Facebook, Mail.ru Group, ВКонтакте и Яндексе. По некоторым <a href="https://www.rbc.ru/magazine/2017/01/584eb3ea9a79471430b4dad7">оценкам</a>, 5–10% общего числа сотрудников в крупных IT-компаниях — это бывшие участники крупнейших студенческих чемпионатов по программированию ICPC.</p><p>По словам участников, контесты учат работать быстро и эффективно, писать чистый код, а также тренировать иностранный язык, поскольку решать задачи и общаться с организаторами приходится на английском. В то же время прокачиваются гибкие навыки (soft skills): стрессоустойчивость, тайм-менеджмент и умение работать в команде. Ещё один плюс — знакомство с коммьюнити и возможность объективно оценить своё мастерство. Причём не обязательно доходить до финала — извлечь пользу можно ещё на стадии подготовки или во время сборов.</p><p>Каждый год в мире проходят сотни чемпионатов по спортивному программированию — от локальных турниров для новичков до масштабных фестивалей с тысячами участников со всего мира. Вместе с МФТИ и проектом <a href="https://discover.it-edu.com/">Moscow Workshops</a> разбираемся, какие соревнования существуют, зачем в них участвовать, а главное, как извлечь из контестов максимальную пользу. Заодно определим <a href="https://tproger.ru/?p=127412&amp;preview=true#advice">10 универсальных советов</a>, которые пригодятся на соревновании любого уровня.</p><h2>Для всех</h2><h3>Google Code Jam</h3><p>Что: ежегодное международное соревнование по программированию от Google.</p><p>Среднее число участников: почти 60 000.</p><p>Условия: возраст старше 13 лет, но для участия в финальном очном турнире нужно быть старше 18.</p><p>Задачи: за фиксированное количество времени нужно решить набор алгоритмических задач. При тестировании задачи участник скачивает входные данные, запускает у себя на компьютере, после чего отправляет ответ. При этом разрешается использовать любой язык программирования и среду разработки.</p><p>Зачем участвовать: для Google соревнование — это инструмент хантинга лучших молодых специалистов. За победителями действительно охотятся работодатели, поэтому Code Jam — отличная возможность попасть на международный рынок труда ещё будучи студентом. Денежные вознаграждения от Google тоже радуют — первой тройке победителей выплачивают от $1000 до $15000.</p><p>Интересный факт: с 2014 года первое место на соревнованиях ежегодно занимает аспирант ИТМО Геннадий Короткевич. Он также получал первые награды на соревнованиях ICPC, Russian Code Cup, Facebook Hacker Cup и Topcoder Open.</p><p>Аналогичный проект от другого IT-гиганта — <a href="http://www.facebook.com/hackercup">Facebook Hacker Cup</a>.</p><h3>Hash Code</h3><p>Что: ежегодный международный контест по программированию от Google.</p><p>Среднее число участников: более 37 000 на первом этапе.</p><p>Условия: возраст старше 16 лет, но для участия в финальном очном турнире нужно быть старше 18. Для начала нужно зарегистрироваться в системе, пройти подготовку и онлайн-отбор — после этого лучших пригласят в штаб-квартиру компании на заключительный этап.</p><p>Задачи: главное отличие Hash Code от Code Jam — это отсутствие абстрактных задач. Участникам предлагают реальный челлендж, с которым столкнулись разработчики Google. Контест больше похож на хакатон, поскольку одного правильного ответа не существует — нужно изобрести самое эффективное решение.</p><p>Зачем участвовать: чтобы прожить один день из жизни разработчика Google, посетить штаб-квартиру крупнейшей IT-компании и примерно понять, что ждёт программиста, который достиг такого уровня.</p><p>Интересный факт: на квалификационном раунде в 2020 году разработчикам нужно было помочь проекту Google Books: найти самый быстрый <a href="https://storage.googleapis.com/coding-competitions.appspot.com/HC/2020/hashcode_2020_online_qualification_round.pdf">способ</a> отсканировать как можно больше книг в библиотеках по всему миру. Google действительно работает над этой задачей и, возможно, использует лучшее предложенное решение на практике.</p><h3>Topcoder Open</h3><p>Что: ежегодный профессиональный турнир по программированию.</p><p>Среднее число участников: 4 000.</p><p>Условия: возраст старше 18 лет, аккаунт на платформе Topcoder и успешное прохождение отборочных соревнований.</p><p>Задачи: турнир проводится по нескольким номинациям. В 2019 году это были Algorithm, UI Design, Development, Marathon Matches, QA и First2Finish. К спортивному программированию относятся Algorithm и Marathon Matches.</p><p>Зачем участвовать: бывшие участники турнира называют Topcoder Open «Диснейлендом возможностей». Турнир открывает доступ к сообществу лучших разработчиков со всего мира. Можно не только найти единомышленников и познакомиться с IT-легендами, но и получить предложение о работе.</p><p>Интересный факт: Китай, Польша и Россия стабильно лидируют по числу победителей в разных номинациях Topcoder One. Участники соревнования могут применять тактику взломов и челленджей, то есть можно получать баллы за нахождение ошибок в чужом коде.</p><h3>VK CUP</h3><p>Что: индивидуальный чемпионат по программированию, организованный</p><p>ВКонтакте совместно с платформой Codeforces и ML Bootcamp.</p><p>Среднее число участников: более 3000 команд.</p><p>Условия: возраст старше 14 лет. Но для участия в финале нужно быть старше 16.</p><p>Задачи: конкурс включает четыре трека: ML, Engine, Mobile и Design. Каждый состоит из трех последовательных раундов: квалификационного, отборочного и финального. На каждом из этапов участникам нужно решить одну или несколько задач.</p><p>Зачем участвовать: как и большинство крупных IT-компаний, VK использует чемпионат для хантинга специалистов. Но параллельно с этим ВКонтакте выполняет просветительскую миссию: помогает разбирать задания отборочных туров, публикует лекции, выкладывает библиотеки компонентов и полезную документацию.</p><p>Интересный факт: До этого в течение ряда лет VK Cup разыгрывался для команд из двух человек, причём участвовать могли только участники не старше 23 лет. Финал VK Cup 2019-2020 должен был состояться в апреле, но его перенесли на лето из-за эпидемии коронавируса. Точные даты пока не определили.</p><h3>Сodeforces</h3><p>Что: соцсеть и платформа для соревнований по алгоритмике, на которой регулярно проводят турниры и образовательные раунды.</p><p>Среднее число участников: по данным Codeforces, с 2013 года платформа опережает Topcoder по количеству активных пользователей. В 2018 на ней было зарегистрировано 600 тыс. аккаунтов.</p><p>Условия: ограничения устанавливают организаторы соревнований, а Codeforces лишь предоставляет им платформу.</p><p>Задачи: всегда разные. Обычно участникам предлагают решить 5 задач за два-три часа. Тоже работает тактика взломов и челленджей: можно получать баллы за нахождение ошибок в чужом коде.</p><p>Зачем участвовать: Codeforces устроена как социальная сеть для разработчиков, которые увлекаются спортивным программированием. Здесь решают нестандартные задачи, прокачивают скиллы, проходят курсы и интенсивы. За победу на крупных контестах победителям вручают призы, а за первые места на регулярных «раундах» повышают рейтинг. Работодатели часто оценивают соискателя по рейтингу на Codeforces — хороший показатель повышает шансы при устройстве на работу или стажировку.</p><p>Интересный факт: Telegram и лично Павел Дуров уже много лет поддерживают деятельность Codeforces. Кроме того, платформа сотрудничает с другими компаниями, в том числе с Microsoft, Mail.Ru, JetBrains и Huawei.</p><p>Другие онлайн-площадки для индивидуальных соревнований:</p><ul><li>AtCoder: здесь собраны более сложные задачи, созданные в традициях японской школы спортивного программирования. Контесты делятся на три категории: ABC предназначена для новичков, ARC — для опытных специалистов, AGC — для экспертов.</li></ul><ul><li>CodeChef: некоммерческая образовательная инициатива индийской компании Directi. Ежемесячно на платформе проводятся онлайн-контесты, а раз в год площадка организует очный чемпионат SnackDown.</li></ul><h3>Rucode Festival</h3><p>Что: всероссийская программа интенсивной подготовки по спортивному программированию и искусственному интеллекту, созданная МФТИ в партнёрстве с Фондом развития Физтех-школ и при поддержке Фонда президентских грантов.</p><p>Условия: <a href="https://stepik.org/64454">онлайн-курс</a> «Быстрый старт в спортивное программирование» доступен всем бесплатно. Он знакомит с базовыми линейными алгоритмами, теорией чисел, динамическим программированием. Дальше, до 2 апреля, можно попасть на отборочное тестирование для участия в трёхдневных интенсивах по спортивному программированию. В конце апреля проект Rucode завершится онлайн-чемпионатом для участников из России и студентов других стран.</p><p>Задачи: занятия проводятся для специалистов с базовыми знаниями С/С++, Java, Pascal/Delphi и Python.</p><p>Зачем участвовать: Rucode позволяет бесплатно изучить основы спортивного программирования и познакомиться с инструментами на базе машинного обучения. Это поможет новичку понять, в каком направлении двигаться дальше. Ещё один плюс — возможность поработать в команде и выйти на сообщество разработчиков со всей России. Кроме того, на чемпионате можно попрактиковаться на реальных датасетах ведущих IT-компаний — трек по искусственному интеллекту подготовлен совместно со Сбербанком — и познакомиться с передовыми разработками в области искусственного интеллекта.</p><p>Интересный факт: RuCode станет первой ступенью масштабного проекта «Сеть интенсивов по подготовке IT-талантов», который до 2024 года позволит в онлайне обучить спортивному программированию более 100 тысяч человек в России.</p><h2>Для студентов</h2><h3>ICPC</h3><p>Что: ежегодный студенческий командный чемпионат мира по программированию. Проводится с 1977 года.</p><p>Среднее число участников: более 52 тысяч студентов из 3 тысяч учебных заведений.</p><p>Условия: возраст не старше 24 лет, статус студента и аспиранта, сформированная команда под руководством тренера.</p><p>Задачи: чемпионат состоит из нескольких этапов: в некоторых регионах — ⅛ (квалификационный тур региона), региональный финал (четвертьфинал), суперфинал региона (полуфинал) и международный финал. На каждом этапе проводят пятичасовой контест, который состоит из 8–14 задач. Соревнование командное, команде из трёх студентов выдаётся один компьютер. Разрешено использовать языки программирования C/C++, Java, Python и Kotlin.</p><p>Зачем участвовать: ICPC считается одним из самых престижных чемпионатов по программированию. Победа на первенстве — большой плюс к резюме. Но подготовка и участие — тоже ценный опыт. Например, на сборах можно прокачать навыки работы с новыми системами, инструментами и технологиями.</p><p>Интересный факт: в июне 2020 ICPC впервые пройдет в Москве — его организует МФТИ. Ещё один интересный факт — в 2000 и 2001 году победителем ICPC стал Николай Дуров, брат Павла Дурова, он отвечал за техническую разработку VK и Telegram. Во время финала работает специальная студия ICPC Live, освещающая на нескольких языках (в том числе и на русском) ход финала.</p><p>В преддверии финала ICPC обычно проводится двухдневный чемпионат по спортивному программированию <a href="https://it-edu.com/pages/moscode2019/">Moscode Festival</a>, организованный Центром развития IT-образования МФТИ. На фестивале за 5 часов нужно решить 12 алгоритмических задач по стандартам ICPC. Участие в фестивале бесплатное, а обучение и соревновательная часть проходят на английском, так что это отличная возможность попрактиковать язык накануне международных соревнований.</p><p>Студентам, а также выпускникам сообщества, также можно поучаствовать в OpenCup — открытом кубке им. Е.В. Панкратьева по программированию. Соревнования проводятся по трём категориям: SCHOOL для школьников, ACM для студентов и OPEN для всех остальных. За победу в этом сезоне борются команды из медалистов ICPC прошлых лет из Польши, США и России. Сезон OpenCup состоит из нескольких этапов, которые проводятся в двух дивизионах — основном и учебном, поэтому первенство подойдёт для программистов разного уровня. Соревнование проходит по секторной схеме с более чем 200 зарегистрированных площадок, а в связи с ограничениями из-за борьбы с коронавирусом командам рекомендовано участвовать в соревнованиях, не собираясь физически в одном месте, но общаясь между собой через средства коммуникации.</p><h2>Для школьников</h2><h3>IOI</h3><p>Что: ежегодная международная олимпиада по информатике среди школьников.</p><p>Среднее число участников: более 300 школьников из 87 стран.</p><p>Условия: возраст не старше 20 лет и отсутствие высшего образования. На момент участия в конкурсе программист не должен числиться в вузе. Тренировочные сборы перед IOI проходят дважды в год, с 2018 — на базе МФТИ. В качестве подготовки школьники участвуют в международных соревнованиях, например, ездят на турниры в другие страны.</p><p>Задачи: в течение двух дней нужно решить и запрограммировать несколько алгоритмических задач, составленных опытными разработчиками. Основные языки — C++ и Java. В отличие от соревнований ICPC, возможны частичные баллы — если задача проходит некоторый набор тестов, удовлетворяющий более слабым ограничениям, участник получает частичный балл.</p><p>Зачем участвовать: участие в крупнейшей школьной олимпиаде по информатике считается бонусом при поступлении в университет. В России сборную формируют по итогам Всероссийской олимпиады по информатике и другим заслугам, призёры которой автоматически попадают в вузы без экзаменов. Более того, они могут претендовать на президентскую стипендию.</p><p>Интересный факт: обычно не более 50% участников получают медали, а золото достается лишь 1/12 части школьников. В среднем соотношение золота, серебра, бронзы и отсутствия медалей составляет примерно 1:2:3:6</p><h3>ВКОШП</h3><p>Что: всероссийская командная олимпиада школьников по программированию.</p><p>Среднее число участников: более 300 команд по три человека в каждой.</p><p>Условия: участвовать могут только школьники, которые предварительно прошли отборочный тур. В остальном это командное соревнование по тем же правилам, что и ICPC.</p><p>Задачи: в течение одного пятичасового компьютерного тура нужно решить несколько задач. Используются языки программирования Pascal, C++14, C#, Java, Python, D и Kotlin.</p><p>Зачем участвовать: участие в ВКОШП — это первый опыт сопоставления своих навыков с навыками других начинающих программистов. При этом даже не придётся выезжать из страны.</p><p>Интересный факт: в 2019 году отборочный тур на ВКОШП в Москве школьники писали одновременно и на тех же задачах, что и столичные студенты. Тогда как раз проходила первая ступень отбора на ICPC — соревнование Moscow Programming Contest. Всего в нём поучаствовали 2284 человека, мероприятие <a href="https://mipt.ru/news/sorevnovanie_po_programmirovaniyu_moscow_programming_contest_ustanovilo_novyy_rekord_po_kolichestvu_">зафиксировали</a> в Реестре рекордов России как самое массовое соревнование по программированию в стране.</p><h3>Технокубок</h3><p>Что: ежегодная олимпиада по программированию для учащихся 8–11 классов, организованная МФТИ, МГТУ им. Н.Э. Баумана и компанией Mail.ru Group.</p><p>Среднее число участников: 7 500 человек, из которых более 550 доходят до финала.</p><p>Условия: допускаются только школьники. Для попадания в очный финал нужно пройти отборочный тур онлайн. Тур проходит по правилам раундов Codeforces.</p><p>Задачи: участникам нужно решить несколько алгоритмических задач. Основные языки программирования — Pascal, C#, C++, Haskell, Go, Java, Python, D, Kotlin, PHP, Perl, Ruby и Scala.</p><p>Зачем участвовать: олимпиада входит в перечень РСОШ и относится к соревнованиям первого уровня. Это позволяет победителям и призерам поступать в российские вузы без экзаменов. Участники «Технокубка» также получают привилегии при поступлении на образовательные проекты Mail.ru Group. А ещё можно выиграть iPad или AirPods.</p><p>Интересный факт: организаторы «Технокубка» креативно подходят к написанию задач. Например предлагают подсчитать разбросанные по комнате носки или помочь клонам выбраться из подземной лаборатории.</p><h2>Как готовиться к контесту: 10 советов от МФТИ</h2><ol><li>Определите, достаточно ли у вас базовых знаний для участия в соревнованиях. На раннем этапе необходимо:Знать хотя бы один язык программирования. Лучше всего подойдут С, С++ или Java. В некоторых случаях можно обойтись и Python, но этот язык медленнее других. Также обязателен опыт алгоритмического программирования.Обладать математической подготовкой: уметь решать нестандартные задачи и строить математические модели.Знать английский достаточно, чтобы понимать лекции и задачи.</li></ol><ol><li>Организуйте индивидуальные тренировки. Даже если вы будете выступать на командных соревнованиях, уделите время самостоятельной прокачке навыков — как практических, так и теоретических.</li><li>Изучите теорию. Почитайте справочник «Олимпиадное программирование», разберите материалы на бесплатном портале <a href="http://e-maxx.ru/">E–maxx</a> — там собраны алгоритмы, электронные пособия и новости спортивного программирования.</li><li>Решайте задачи — как можно больше и чаще. Ищите задания с прошлых чемпионатов и олимпиад. Их публикуют на <a href="http://acm.timus.ru">Timus Online Judge</a>, <a href="http://codeforces.com">Codeforces</a>, <a href="http://www.topcoder.com">TopCoder</a>, <a href="http://www.spoj.com">Spoj</a>, <a href="http://www.codechef.com">CodeChef</a>, <a href="http://www.codingame.com/start">Codingame</a> и <a href="http://www.gowrikumar.com/c/index.php">C Puzzles </a>(для языка C). На русском языке доступен Сервис дистанционной подготовки к информатике.</li><li>Для начала решайте задачи без учёта времени. Потом уже ставьте таймер. Не останавливайтесь на самых лёгких вариантах — постепенно двигайтесь от простого к более сложному.</li><li>Организуйте командные тренировки. Это поможет наладить отношения в коллективе и определить сильные и слабые стороны каждого. Для этой цели подойдут как локальные тренировки, так и сборы по спортивному программированию. В России регулярно проводятся кэмпы для подготовки к крупным соревнованиям. География обширная: Москва, Петрозаводск, Ижевск, Иркутск, Уфа, Владивосток. Есть и международная программа Moscow Workshops, которая зародилась на кампусе Физтеха, а сейчас проводит сборы по всему миру — в Пекине, Сингапуре, Максате, Риге и других городах. В рамках проекта есть и лагерь для учеников 9–11 классов — Moscow Workshops Juniors. Он подойдет для уже прокачанных школьников. Участники каждый день тренируются, посещают лекции, но также занимаются спортом и участвуют в интеллектуальных играх, чтобы поддерживать баланс.</li><li>Не забывайте про техническую подготовку компьютера. ICPC предоставляет устройства с установленным программным обеспечением. На региональных чемпионатах могут потребоваться свои ноутбуки — заранее уточните, какие требования к настройкам предъявляют организаторы.</li><li>Не пренебрегайте пробным туром перед соревнованием. Это поможет протестировать систему, проверить базовую функциональность и оценить дополнительные возможности.</li><li>Помните о гибких навыках. Вы можете идеально знать язык программирования и великолепно решать задачи, но при этом не уметь планировать время или управлять процессами. Эти навыки нужно прокачивать точно так же, как навыки работы с Java. Изучите принципы тайм-менеджмента и командообразования. Тренируйте креативность, когнитивную гибкость и критическое мышление. Учитесь вести переговоры и решать конфликты, а также грамотно распределять ресурсы.</li><li>Не геройствуйте — отсутствие сна и отказ от еды ещё никому не помогал победить.</li></ol>]]></content:encoded>
    </item>
    <item>
      <title>«ВКонтакте» открыла сбор заявок на участие в чемпионате по программированию VK Cup</title>
      <link>https://tproger.ru/news/vk-cup-2019</link>
      <comments>https://tproger.ru/news/vk-cup-2019?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Екатерина Никитина]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/vk-cup-2019</guid>
      <description><![CDATA[<p>Призовой фонд VK Cup — 2,75 миллиона рублей, направлений четыре: олимпиадное программирование, дизайн интерфейсов, мобильная разработка и ML.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/vk-cup-2019">«ВКонтакте» открыла сбор заявок на участие в чемпионате по программированию VK Cup</a>»</p>]]></description>
      <category><![CDATA[Олимпиадное программирование]]></category>
      <category><![CDATA[ВКонтакте]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 30 Oct 2019 13:35:33 GMT</pubDate>
      <content:encoded><![CDATA[<p>«ВКонтакте» начала собирать заявки на участие в чемпионате VK Cup. Есть возрастное ограничение: участнику должно быть больше 14 лет. Общий призовой фонд — 2,75 миллиона рублей. За первое место можно получить 524 288 рублей.</p><p>У чемпионата четыре направления: олимпиадное программирование, дизайн интерфейсов, мобильная разработка и машинное обучение. Сбор заявок закончится 4 декабря. Квалификационный тур пройдёт с 6 по 16 декабря.</p>]]></content:encoded>
    </item>
    <item>
      <title>Организаторы Международной математической олимпиады готовят конкурс на создание алгоритмов</title>
      <link>https://tproger.ru/news/imo-algorithm-competition</link>
      <comments>https://tproger.ru/news/imo-algorithm-competition?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Екатерина Никитина]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/imo-algorithm-competition</guid>
      <description><![CDATA[<p>Алгоритмам дадут столько же времени, сколько и участникам-людям, и решать они будут классические олимпиадные математические задачи.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/imo-algorithm-competition">Организаторы Международной математической олимпиады готовят конкурс на создание алгоритмов</a>»</p>]]></description>
      <category><![CDATA[Алгоритмы и структуры данных]]></category>
      <category><![CDATA[Олимпиадное программирование]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 13 Sep 2019 11:38:59 GMT</pubDate>
      <content:encoded><![CDATA[<p>Автор: Андрей Карпов</p><p>Решение олимпиадных задач по математике хотят доверить программе. Оргкомитет Международной математической олимпиады предложил создать конкурс IMO Grand Challenge. По сути, это такая же олимпиада, но для алгоритмов.</p><p>IMO проводится с 1959 года. На ней старшеклассники должны решить шесть заданий разного уровня сложности. Организаторы предлагают конкурсантам написать на языке Lean алгоритм, который будет решать такие же математические задачи, какие решают школьники на олимпиаде. Алгоритмам дадут столько же времени, сколько и участникам-людям, — по 4,5 часа на каждый набор из трёх задач.</p><p>Пока неясно, выделят ли мероприятие в отдельный конкурс или он станет частью Международной математической олимпиады. Правилами занимаются исследователи из Microsoft Research, Питтсбургского и Стэнфордского университетов. Они говорят, что предложенный вариант не конечный и будет дорабатываться.</p>]]></content:encoded>
    </item>
    <item>
      <title>День, магазин, парковка — задача для программистов</title>
      <link>https://tproger.ru/problems/afternoon-market-parking</link>
      <comments>https://tproger.ru/problems/afternoon-market-parking?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Туренко]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/problems/afternoon-market-parking</guid>
      <description><![CDATA[<p>Парковка задана графом из N узлов и M рёбер, у каждого блока своя вместимость. Нужно распечатать чек с минимальной суммой расходов для владельца.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/problems/afternoon-market-parking">День, магазин, парковка — задача для программистов</a>»</p>]]></description>
      <category><![CDATA[Задачи умеренной сложности]]></category>
      <category><![CDATA[Алгоритмы и структуры данных]]></category>
      <category><![CDATA[Олимпиадное программирование]]></category>
      <category><![CDATA[Задачки]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Sat, 27 Apr 2019 09:16:25 GMT</pubDate>
      <content:encoded><![CDATA[<h2>Дано</h2><p>Парковка построена в виде графа. Он состоит из N узлов и M рёбер. В нём нет ни петель, ни параллельных рёбер.</p><p>Каждый узел — парковочный блок с определённой вместимостью.</p><p>Каждое ребро (u, v) обладает весом w. Это означает, что чтобы добраться от узла u к узлу v, надо потратить некоторое количество единиц w.</p><p>Места на парковке платные, стоимость составляет F единиц в любом месте графа.</p><p>На парковку въезжает K одинаковых автомобилей, каждый из которых отмечен номером от 1 до K. Машины въезжают в стандартном порядке: сначала автомобиль под номером 1, затем — под номером 2 и так далее до автомобиля под номером K.</p><p>Нужно распечатать чек с минимальной общей суммой расходов для владельца автомобиля. Сумма расходов складывается из парковочного взноса и затрат на перемещение (W, вы же помните?). Гарантируется, что из одного парковочного места можно добраться до любого другого.</p><p>Все автомобили въезжают на стоянку с первого парковочного места.</p><h2>Формат ввода</h2><p>Первая строка состоит из трёх целых чисел: N, M и F. Они обозначают количество узлов, рёбер и стоимость за въезд соответственно.</p><p>Вторая строка состоит из N целых чисел, разделённых пробелами, которые означают количество мест в каждом блоке парковки. Этот массив представляется как C[].</p><p>Следующие строки M содержат три целых числа, разделённых пробелом: u, v и w, обозначающие, что чтобы добраться от узла u к узлу v будет затрачено w единиц.</p><p>Последняя строка содержит целое число K.</p><p>Пример ввода:</p><p>5 4 201 2 1 1 21 2 24 5 13 4 11 3 15</p><h2>Формат вывода</h2><p>Выведите K целых чисел, разделённых пробелами, обозначающие ответ для каждого автомобиля. i-е целое число из ряда целых чисел, разделённых пробелами, означает ответ для i-го номера автомобиля.</p><p>Пример: есть пять автомобилей. Третье целое число в ряду из пяти будет соответствовать третьему автомобилю.</p><p>Если автомобиль невозможно припарковать, выведите -1 для него.</p><p>Пример вывода:</p><p>20 21 22 22 22</p><h2>Ограничения для входных данных</h2><figure><img src="https://media.tproger.ru/uploads/2019/03/Snimok-jekrana-2019-03-14-v-23.47.04.jpg" alt="" /></figure><h2>Другие ограничения</h2><p>Ограничение по времени: не более 1 секунды для каждого входного файла.<br />Ограничение в потреблении памяти: 256 MB.<br />Ограничение для исходного кода: 1024 KB.</p><p>Ниже представлены решения на различных языках, а в конце дано пояснение. Делитесь своими решениями в комментариях.</p><h2>Варианты решения</h2>]]></content:encoded>
    </item>
    <item>
      <title>Аргументы и функции, 5 апреля</title>
      <link>https://tproger.ru/newsletter/5-apr-2019</link>
      <comments>https://tproger.ru/newsletter/5-apr-2019?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Екатерина Никитина]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/newsletter/5-apr-2019</guid>
      <description><![CDATA[<p>Рабочая группа предлагает закрыть доступ к данным россиян компаниям без юрлица в России, команда МГУ взяла кубок ICPC, Безос обещает интернет всей планете.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/newsletter/5-apr-2019">Аргументы и функции, 5 апреля</a>»</p>]]></description>
      <category><![CDATA[Twitter]]></category>
      <category><![CDATA[Олимпиадное программирование]]></category>
      <category><![CDATA[Аргументы и функции]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 05 Apr 2019 17:39:34 GMT</pubDate>
      <content:encoded><![CDATA[<h2>Главные новости пятницы</h2><h4>Раз</h4><p>Рабочая группа «Цифровой экономики» <a href="https://tproger.ru/news/russian-data-law-proposal/">предложила</a> запретить использовать данные россиян тем компаниям, которые не удосужились открыть в России юридическое лицо. Это особо касается Twitter и Facebook, которые даже как организаторы распространения информации не зарегистрировались (хотя должны были) и сервера в страну не перенесли.</p><p>Обоснование такое: компаниям, которые не соблюдают российское законодательство, живётся в бизнесе лучше, чем исполнительным и послушным, а это нечестно.</p><p>В любом случае, эксперты говорят, что у этого предложения мало шансов на реализацию. Оно противоречит 108 конвенции Совета Европы. <a href="https://www.consultant.ru/document/cons_doc_LAW_121499/">Конвенции о защите физических лиц при автоматизированной обработке персональных данных</a>. Россия её тоже обязана соблюдать, так что, может, и обойдётся.</p><h4>Два</h4><p>Сегодня снова судили Twitter, уже в третий раз, и на «Медиазоне» уже ждёт читателей свежий репортаж. Если кратко, компанию признали виновной в отказе локализовать сервера и оштрафовали на 3 тысячи рублей.</p><p>12 апреля по тем же обвинениям судить будут Facebook.</p><h4>Три</h4><p>«Ведомости» доложили, что в поиск частот для сетей 5G включился Владимир Путин. <a href="https://tproger.ru/newsletter/29-mar-2019/">В конце марта</a> Минообороны отказалось передавать операторам частоты 3,4−3,8 ГГц, занятые силовыми ведомствами. А предложенный диапазон 4,8−4,99 ГГц для 5G не подходит.</p><p>Этот вопрос вчера снова обсуждали на заседании Госкомиссии по радиочастотам. Там выяснилось, что Владимир Путин поручил проработать этот вопрос Совету безопасности, так что, возможно, скоро удастся найти компромисс.</p><h2>Снова первые</h2><p>Команда студентов из МГУ <a href="https://tproger.ru/news/icpc-2019-results/">заняла</a> вчера первое место в чемпионате по программированию ICPC 2019. Те же ребята взяли золото и <a href="https://tproger.ru/news/mgu-icpc/">в прошлом году</a>. Это первый в истории ICPC случай, когда команда второй раз побеждает в одном и том же составе. Российские студенты из ВШЭ и МФТИ получили бронзовые медали.</p><p>Команда МГУ обошла других золотых медалистов: программистов из MIT, Токийского и Варшавского университетов.</p><p>Следующий ICPC пройдёт в 2020 году в Москве, организовывать вечеринку будет МФТИ.</p><p>И напоследок немного о победителях прошлых лет, чтобы вы понимали, насколько всё круто:</p><figure><img src="https://media.tproger.ru/uploads/2019/04/5.-MGU_0.jpg" alt="" /></figure><h2>Что ещё любопытного</h2><p><a href="https://vc.ru/future/63553-amazon-zaplanirovala-zapusk-bolee-3000-sputnikov-dlya-razdachi-interneta-po-vsemu-miru">Amazon</a>: оказывается, Безос тоже хочет поучаствовать во флешмобе «Каждой деревне по интернету». Amazon подтвердила, что хочет запустить около 3 тысяч спутников на околоземную орбиту, чтобы обеспечить полное покрытие планеты для высокоскоростного доступа к Сети. Примерно над тем же работает Илон Маск и ещё британская компания OneWeb. Проект Безоса называется Kuiper (возможно, в честь астронома Джерарда Койпера).</p><p><a href="https://vc.ru/tech/63611-google-nachala-pokazyvat-reklamu-na-televizorah-i-pleerah-s-android-tv">Android</a>: Google начала показывать рекламные блоки на плеерах и телевизорах с Android TV. Компания говорит, что «тестирует рекламу для повышения вовлечённости пользователей». Она отображается на главном экране, и избавиться от неё нельзя, только откатить системное обновление Android TV Core Services.</p><p><a href="https://www.securitylab.ru/news/498643.php">Chrome</a>: исследователи опубликовали эксплойт для ещё непропатченной уязвимости в браузере. Сделали они это, чтобы показать, насколько долго и муторно доставляется патч до пользователей стабильной версии. От известия об уязвимости до исправления может пройти несколько недель, и некоторым это не нравится. Конечно, хакерам нравится, но это вроде не то, к чему надо стремиться, так?</p><blockquote>Чайник из Юты — это своего рода «Hello World» в 3D-моделировании. Эталонная модель, которую часто применяют в компьютерной графике. Но этот чайник в самом деле существует, и хранится он не в Юте, а в Калифорнии. У нас есть его фоточка и заодно история о том, как обычный чайник без выдающихся способностей стал моделью и попал в учебники.</blockquote>]]></content:encoded>
    </item>
    <item>
      <title>Команда МГУ победила в мировом чемпионате по программированию ICPC 2019</title>
      <link>https://tproger.ru/news/icpc-2019-results</link>
      <comments>https://tproger.ru/news/icpc-2019-results?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Екатерина Никитина]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/icpc-2019-results</guid>
      <description><![CDATA[<p>Студенты МГУ выиграли ICPC во второй раз тем же составом, ВШЭ и МФТИ получили бронзу, а команда петербургского ИТМО осталась без медалей.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/icpc-2019-results">Команда МГУ победила в мировом чемпионате по программированию ICPC 2019</a>»</p>]]></description>
      <category><![CDATA[Олимпиадное программирование]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 05 Apr 2019 09:21:56 GMT</pubDate>
      <content:encoded><![CDATA[<p>Команда студентов из МГУ заняла первое место в чемпионате по программированию ICPC 2019. Те же ребята взяли золото и <a href="https://tproger.ru/news/mgu-icpc/">в прошлом году</a>. Это первый в истории ICPC случай, когда команда второй раз побеждает в одном и том же составе.</p><figure><img src="https://media.tproger.ru/uploads/2019/04/5.-MGU.jpg" alt="" /></figure><p>Также золотые медали получили команды:</p><ul><li>MIT (второе место);</li><li>Токийского университета (третье место);</li><li>Варшавского университета (четвертое место).</li></ul><figure><img src="https://media.tproger.ru/uploads/2019/04/5.-MGU_1.png" alt="" /></figure><p>Российские студенты из ВШЭ и МФТИ получили бронзовые медали, а вот команда из петербургского ИТМО на этот раз в число медалистов не попала.</p><figure><img src="https://media.tproger.ru/uploads/2019/04/5.-MGU_2.jpg" alt="Команда ВШЭ на ICPC 2019" /></figure><figure><img src="https://media.tproger.ru/uploads/2019/04/5.-MGU_3.jpg" alt="Команда МФТИ на ICPC 2019" /></figure><p>Нельзя не сказать, что российские команды побеждают в чемпионате с 2012 года. Этот раз — восьмой подряд:</p><figure><img src="https://media.tproger.ru/uploads/2019/04/5.-MGU_0.jpg" alt="" /></figure><p>Кому интересно, с какими задачами столкнулись команды, их можно посмотреть в файле (PDF), а порешать аналогичные задачи можно на сайте ICPC. Ещё есть запись трансляции состязаний (почти 7 часов):</p><p>ICPC 2020 пройдёт в Москве, принимать чемпионат будет МФТИ.</p>]]></content:encoded>
    </item>
    <item>
      <title>Герман Греф: «В будущем программисты будут востребованы всё меньше и меньше»</title>
      <link>https://tproger.ru/news/german-gref-math-comment</link>
      <comments>https://tproger.ru/news/german-gref-math-comment?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Екатерина Никитина]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/german-gref-math-comment</guid>
      <description><![CDATA[<p>Глава Сбербанка на форуме «Открытые инновации» назвал физико-математические школы пережитком прошлого и призвал развивать школьников во всех направлениях.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/german-gref-math-comment">Герман Греф: «В будущем программисты будут востребованы всё меньше и меньше»</a>»</p>]]></description>
      <category><![CDATA[Обучение программированию]]></category>
      <category><![CDATA[Олимпиадное программирование]]></category>
      <category><![CDATA[Образование]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 17 Oct 2018 11:43:23 GMT</pubDate>
      <content:encoded><![CDATA[<p>Во время выступления на международном форуме «Открытые инновации» глава Сбербанка России Герман Греф <a href="https://ria.ru/economy/20181016/1530766196.html">назвал</a> физико-математические школы «пережитком прошлого». Он заявил, что ситуация с излишним упором на направления «экономист» и «юрист» может повториться с «математиками» и «программистами». По словам Грефа, со временем эти профессии будут менее востребованы.</p><h3>Математические школы не нужны</h3><p>По мнению Грефа, школьников необходимо развивать во всех направлениях, «на 360 градусов» и «без перегибов».</p><p>Нужны все специальности, нужны люди всех дарований и таланты. И не нужны нам математические школы. По-моему, это пережиток прошлого. Я категорический противник математических школ &lt;…&gt; Так было в Советском Союзе, и мне кажется, что это не очень хороший опыт.</p><p>Глава Сбербанка отметил, что проблем с программистами у компаний нет, а вот некоторых других специалистов не достаёт. Каких именно профессионалов не хватает, он не уточнил.</p><h3>Математические школы нужны</h3><p>Министр просвещения РФ Ольга Васильева, наоборот, <a href="https://ria.ru/sn_edu/20181016/1530802266.html">считает</a> подготовку специалистов по этим направлениям важной частью развития страны, поскольку математика — основополагающая, фундаментальная наука. Комментируя слова Германа Грефа, чиновница напомнила, что за последние 10 лет российские студенты IT-направлений занимали первые места на многих международных состязаниях.</p><p>Я в последнее время прошу, чтобы меня знакомили с периодикой нашей и зарубежной, что говорят и пишут мои коллеги о российском образовании, что отмечают бесспорно? Русские хорошо готовят по литературе, искусству и математике. Это то, чем всегда была сильна наша наука.</p><p>Васильева также отметила, что «есть указ о стратегии развития нашей страны», и он предусматривает в ближайшее время создание 15 математических центров.</p><p>С Германом Грефом не согласился и <a href="https://ru.wikipedia.org/wiki/%D0%AF%D0%BC%D0%B1%D1%83%D1%80%D0%B3,_%D0%95%D0%B2%D0%B3%D0%B5%D0%BD%D0%B8%D0%B9_%D0%90%D0%BB%D0%B5%D0%BA%D1%81%D0%B0%D0%BD%D0%B4%D1%80%D0%BE%D0%B2%D0%B8%D1%87">Евгений Ямбург</a> — Заслуженный учитель России и директор московского Центра образования № 109. Он <a href="https://ria.ru/society/20181016/1530794954.html">отметил</a>, что российская традиция математического образования уникальна и пользуется успехом даже за рубежом: она применяется также в Китае, «и поэтому китайские школьники стали довольно мощно побеждать в международных олимпиадах».</p><p>Слова Ольги Васильевой подтверждает история чемпионата мира по программированию АСМ ICPC. В 2018 году его <a href="https://tproger.ru/news/mgu-icpc/">выиграли</a> студенты из МГУ, а команда МФТИ по общему медальному зачёту заняла второе место. В 2017 году лидером состязания стали программисты из ИТМО, а в 2016 году — из СПбГУ.</p>]]></content:encoded>
    </item>
    <item>
      <title>Студент из Санкт-Петербурга стал рекордсменом Google Code Jam</title>
      <link>https://tproger.ru/news/google-code-jam-winner</link>
      <comments>https://tproger.ru/news/google-code-jam-winner?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Виктория Закирова]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/google-code-jam-winner</guid>
      <description><![CDATA[<p>В Google Code Jam Геннадий Короткевич из Университета ИТМО победил в пятый раз; другим программистам удавалось выиграть максимум два раза подряд.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/google-code-jam-winner">Студент из Санкт-Петербурга стал рекордсменом Google Code Jam</a>»</p>]]></description>
      <category><![CDATA[Олимпиадное программирование]]></category>
      <category><![CDATA[Google]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 16 Aug 2018 18:50:05 GMT</pubDate>
      <content:encoded><![CDATA[<p>Учащийся Университета ИТМО Геннадий Короткевич в пятый раз <a href="http://4pda.ru/2018/08/15/352948/">одержал победу</a> в международном соревновании по программированию Google Code Jam, которое проводится с 2003 года и открыто для всех желающих. Ежегодно в чемпионате участвует свыше 50 000 человек, но другим программистам удавалось завоевать титул победителя максимум два раза подряд.</p><p>Google Code Jam — не единственное достижение Короткевича: молодой человек дважды выиграл в ACM ICPC в 2013 и 2015 годах, пять раз — в Яндекс.Алгоритме и неоднократно получал призы в других чемпионатах.</p><h3>Как проходил Google Code Jam</h3><p>В турнире 2018 года финалистам дали четыре часа на решение пяти задач, каждая из которых включала простую и сложную части. В первом случае участник сразу мог проверить правильность ответа, во втором узнавал его только во время награждения. Особенностью этого года стала возможность тестировать решения только на судейских компьютерах.</p><p>Короткевич отмечает, что для победы в соревновании значение имеет каждая задача. К примеру, чтобы решить головоломку Two-Tiling, программисту потребовалось полтора часа, но именно она помогла набрать победное количество баллов.</p><p>База исходных кодов с Google Code Jam пригодилась для решения научных задач. Исследователи из Университетов Дрекселя и Вашингтона <a href="https://tproger.ru/news/ai-programmer-recognition/">использовали</a> её для тестирования ИИ, распознающего программистов по их манере написания кода. Изучив работы 100 программистов, искусственный интеллект распознал 96 % авторов, используя по 8 примеров кода от каждого разработчика. В случае с исходниками 600 участников конкурса точность распознавания составила 83 %.</p>]]></content:encoded>
    </item>
    <item>
      <title>«ВКонтакте» подвела итоги турнира по программированию VK Cup 2018</title>
      <link>https://tproger.ru/news/vk-cup-2018-winners</link>
      <comments>https://tproger.ru/news/vk-cup-2018-winners?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Тимур Кондратьев]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/vk-cup-2018-winners</guid>
      <description><![CDATA[<p>В финале VK Cup 2018 двадцать команд из России, Украины и Беларуси решали семь задач за три часа, а призовой фонд составил 2,5 млн рублей.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/vk-cup-2018-winners">«ВКонтакте» подвела итоги турнира по программированию VK Cup 2018</a>»</p>]]></description>
      <category><![CDATA[Олимпиадное программирование]]></category>
      <category><![CDATA[ВКонтакте]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 14 Aug 2018 15:04:36 GMT</pubDate>
      <content:encoded><![CDATA[<p>Руководство «ВКонтакте» <a href="https://vk.com/blog/press-vk-cup-2018">объявило</a> победителей пятого ежегодного соревнования среди молодых программистов VK Cup 2018. В 2018 году за призовой фонд в 2,5 млн рублей боролось рекордное количество команд — 3279, а победителями стали студенты Александр Логунов и Михаил Путилин из Санкт-Петербурга.</p><p>Турнир по программированию VK Cup проводится руководством социальной сети совместно с платформой Codeforces c 2012 года. В его ходе молодые люди в возрасте от 14 до 23 лет решают задачи из различных разделов алгоритмов и структур данных, а проходит он в формате парного программирования.</p><h3>Топ-3 победителей VK Cup 2018</h3><ol><li>Александр Логунов и Михаил Путилин (Команда «120 Minutes Adventure», Санкт-Петербург) — 1 048 576 рублей.</li><li>Айдар Сайранов (Команда «я и моя девушка», Санкт-Петербург) — 524 288 рублей.</li><li>Владислав Макеев и Михаил Ипатов (Команда «Нижний Магазин SU», Москва) — 262 144 рубля.</li></ol><h3>Подробнее о финале</h3><p>В ходе заключительного этапа соревнования, который проходил в главном штабе «ВКонтакте» 12 августа 2018 года, 20 командам-участникам из России, Украины и Беларуси было предложено решить 7 задач различной сложности за 3 часа. Жюри оценивало не только правильность, но и скорость написания программ. Сообщается, что среди участников финала были чемпионы и призеры студенческой олимпиады ACM ICPC.</p><p>Самым используемым ЯП стал С++: на нем было написано 73 % задач. 13 % от общего количества занимает Python и 6 % — Java. Всего разрешенных языков было 15, среди них: JS, C, Delphi и Kotlin.</p><p>Для тех, кто хочет опробовать свои силы в следующем турнире или просто ознакомиться с примерами задач, мы <a href="https://tproger.ru/problems/vk-cup-2018-qualification-1/">подготовили</a> разбор заданий из первого отборочного тура VK Cup 2018.</p>]]></content:encoded>
    </item>
    <item>
      <title>Разбор задач из онлайн-соревнования по бэкенду Yandex.Taxi Coding Fest</title>
      <link>https://tproger.ru/problems/ytcf-problems-solutions</link>
      <comments>https://tproger.ru/problems/ytcf-problems-solutions?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Никита Прияцелюк]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/problems/ytcf-problems-solutions</guid>
      <description><![CDATA[<p>Решения задач июльского онлайн-соревнования по бэкенду Yandex.Taxi Coding Fest с подробным разбором, включая группировку точек подачи такси.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/problems/ytcf-problems-solutions">Разбор задач из онлайн-соревнования по бэкенду Yandex.Taxi Coding Fest</a>»</p>]]></description>
      <category><![CDATA[Головоломки]]></category>
      <category><![CDATA[Олимпиадное программирование]]></category>
      <category><![CDATA[Партнёрский материал]]></category>
      <category><![CDATA[Задачки]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 09 Aug 2018 18:23:44 GMT</pubDate>
      <content:encoded><![CDATA[<p>В июле прошло онлайн-соревнование по бэкенду Yandex.Taxi Coding Fest. Перед вами задачи, которые предлагались на соревновании, и их решения с подробным разбором.</p><h3>1. Группировка рекомендуемых точек подачи на прямой</h3><h4>Формулировка задачи</h4><figure><img src="https://media.tproger.ru/user-uploads/33794/2024-02-21/aee74482-e274-4d8c-a008-bf1ae347557f.png" alt="" /></figure><p>На улицу Льва Толстого заказали такси N раз. Известны точки на улице, куда подъехали водители. Назовём их точками прибытия. Приложение запоминает точки прибытия и на их основе просчитывает рекомендуемые точки подачи. Точки подачи нужны, чтобы приложение порекомендовало пользователю, куда лучше заказать автомобиль.</p><p>Сформируйте из точек прибытия на улице Льва Толстого наименьшее количество рекомендуемых точек подачи. Каждая рекомендуемая точка должна быть одной из списка точек прибытия. Расстояние от каждой точки прибытия до ближайшей рекомендуемой не должно превосходить R.</p><p><b>Формат ввода</b></p><p>В первой строке задаётся два числа N (0 ≤ N ≤ 105) и R (0 ≤ R ≤ 109) через пробел. В следующей строке записано N целых чисел (координаты точек), каждое из которых по абсолютной величине не превосходит 109.</p><p>Формат вывода</p><p>Выведите одно целое число, показывающее наименьшее количество точек, которые надо выбрать в качестве рекомендуемых точек подачи.</p><p><b>Примеры</b></p><p><b>Формат вывода</b></p><p>Выведите одно целое число, показывающее наименьшее количество точек, которые надо выбрать в качестве рекомендуемых точек подачи.</p><p><b>Примеры</b></p><p><b>Входные данные №1</b></p><p>3 2</p><p>3 5 1</p><p><b>Выходные данные №1</b></p><p>1</p><p><b>Входные данные №2</b></p><p>3 2</p><p>4 7 1</p><p><b>Выходные данные №2</b></p><p>3</p><p><b>Входные данные №3</b></p><p>6 1</p><p>6 2 4 3 5 1</p><p>Выходные данные №3</p><p>2</p><h4>Разбор задачи</h4><p>Для начала переведём задачу в математическую постановку.</p><p>Нужно выбрать такое наименьшее количество точек на числовой прямой, чтобы расстояние от каждой имеющейся точки до выбранной нами не превосходило R. Можно считать, что каждая выбранная нами точка вырезает на плоскости отрезок длиной 2R, и после вырезаний должны пропасть все точки. Для решения задачи нам сначала надо отсортировать точки. После сортировки у нас появляется самая левая точка. Легко доказать, что эта точка в оптимальном решении должна входить ровно в один отрезок, причём этот отрезок должен быть максимально отодвинут вправо. Чтобы выбрать наиболее подходящую точку, мы проходимся циклом по точкам слева направо и ищем самую правую, у которой расстояние до первой точки не превосходит R. Потенциально это может быть и самая правая точка.</p><p>Как только мы нашли эту точку, мы виртуально вырезаем отрезок длиной 2R и пропускаем все точки, что находятся внутри него (слева от первой и справа от последней точки отрезка).</p><p>После этого действия у нас снова остался отсортированный список точек, к которому мы применяем тот же алгоритм. Осталось посчитать, сколько точек нам удалось выбрать.</p><h3>2. Такси в отеле</h3><h4>Формулировка задачи</h4><figure><img src="https://media.tproger.ru/user-uploads/33794/2024-02-21/9d64f53f-f571-4802-bbcf-6d29eaec5145.png" alt="" /></figure><p>При отеле в курортном городе работает такси. Оно забирает постояльцев отеля из аэропорта, а в день отъезда отвозит назад. Нам известны дни приездов и отъездов автомобилей этого такси и число клиентов отеля, которые каждый раз приезжали или уезжали. В один и тот же день может быть как несколько приездов, так и несколько отъездов посетителей.</p><p>В отеле по нечётным числам месяца готовит шеф-повар Мефодий, по чётным — шеф-повар Кирилл. Они поспорили, кому тяжелее работать. Повара хотят посчитать максимальное число посетителей, для которых готовил каждый из них с первого дня по текущий включительно.</p><p>Напишите программу, которая, используя данные про приезды и отъезды посетителей, выводит на стандартный вывод два числа через пробел. Первое число — максимальное количество посетителей, для которых готовил Мефодий. Второе — максимальное количество посетителей, для которых готовил Кирилл.</p><p>Условие: для приезжающих постояльцев в день приезда готовить нужно, а для отъезжающих в этот день — уже не нужно (то есть нужно готовить только для тех, кто остаётся в отеле как минимум на ночь). Изначально в отеле посетителей не было.</p><p><b>Формат ввода</b></p><p>На входе на первой строке есть одно число N (2 ≤ N ≤ 105), где (N − 1) — число записей в логе.</p><p>Далее следует строка с информацией про номер текущего дня M — целое положительное число (0 ≤ M ≤ 103). После идёт (N − 1) — строка с данными о приездах и отъездах такси с посетителями по текущий день в виде набора строк в следующем формате:</p><p>arrival arrival_day_number clients_count</p><p>departure departure_day_number clients_count</p><p>Строки, начинающиеся со слова arrival, соответствуют приезду clients_count клиентов в день под номером arrival_day_number.</p><p>Строки, начинающиеся со слова departure, соответствуют отъезду clients_count клиентов в день под номером departure_day_number.</p><p>При этом выполняются условия:</p><p>0 &lt; clients_count ≤ 103</p><p>0 ≤ arrival_day_number ≤ 105</p><p>0 ≤ departure_day_number ≤ 105</p><p>Формат вывода</p><p>Два числа — максимальные количества посетителей, для которых готовили Мефодий и Кирилл соответственно.</p><p><b>Примеры</b></p><p><b>Входные данные</b></p><p>7</p><p>3</p><p>arrival 3 2</p><p>departure 2 5</p><p>arrival 3 2</p><p>arrival 2 2</p><p>arrival 1 10</p><p>departure 3 7</p><p><b>Выходные данны</b>е</p><p>10 7</p><h4>Разбор задачи</h4><p>Задача имеет несколько разных подходов к решению. Разберём один из них.</p><p>Нас просят найти два числа: максимальные количества посетителей в день, для которых готовил каждый из поваров.</p><p>Для начала считаем данные о приездах и отъездах посетителей в массив структур, каждая из которых хранит в себе информацию об одном из событий: в какой из дней был приезд или отъезд и сколько людей в этот день приехало или выехало из отеля соответственно.</p><p>Далее отсортируем этот массив событий в хронологическом порядке. После этого, чтобы посчитать интересующие нас показатели, нужно пройти по получившемуся массиву событий слева направо, поддерживая текущее число посетителей отеля, для которых нужно готовить, и обновляя два максимума — количества посетителей в чётные и нечётные дни. При этом стоит обратить внимание на два нюанса:</p><p>1. В один и тот же день может быть несколько приездов и отъездов, поэтому нужно явно посчитать, сколько людей приехало и выехало в каждый из дней, суммируя приезжающих и вычитая выезжающих.</p><p>2. Если в некоторый момент времени мы рассматриваем день с, например, чётным номером N, а на предыдущей итерации цикла был рассмотрен день с номером меньшим (N − 1), то, при условии, что текущее число посетителей отеля, для которых нужно готовить превысило максимум для нечётных дней, нужно обновить и этот максимум (по нечётным дням).</p><h3>3. Очередь такси в космическом порту</h3><h4>Формулировка задачи</h4><figure><img src="https://media.tproger.ru/user-uploads/33794/2024-02-21/aa2359d3-b060-4ec9-9de1-1faa5b4e3ec7.png" alt="" /></figure><p>Водитель такси прибывает в космопорт Луны. Все такси в ожидании заказа выстраиваются в очередь возле шлюзов космической станции.</p><p>Считаем, что автомобили образуют очередь, если все они находятся на одной прямой. Длина очереди не может быть менее 3. Координаты автомобиля задаются тремя целыми числами. В одной точке пространства не может находиться более одного автомобиля.</p><p>Помогите водителю найти самую короткую очередь. В случае, если невозможно найти минимальную очередь длиной ≥ 3, в качестве ответа верните 0.</p><p><b>Формат ввода</b></p><p>Первая строка содержит целое неотрицательное число — количество записей с координатами такси. Каждая следующая строка состоит из трёх целых чисел, разделённых пробелами, образующих тройку координат x, y, z.</p><p><b>Формат вывода</b></p><p>Одно число — минимальная длина очереди.</p><p><b>Примеры</b></p><p>Входные данные №1</p><p>10</p><p>1 1 1</p><p>2 2 2</p><p>3 3 3</p><p>4 4 4</p><p>5 5 5</p><p>6 6 6</p><p>7 7 7</p><p>3 6 9</p><p>2 4 6</p><p>1 2 3</p><p>Выходные данные №1</p><p>3</p><p>Входные данные №2</p><p>5</p><p>1 1 1</p><p>2 2 2</p><p>3 3 3</p><p>4 1 4</p><p>9 9 9</p><p>Выходные данные №2</p><p>4</p><h3>Разбор задачи</h3><p>Очевидно, что задача сводится к поиску подмножеств точек, лежащих на одной прямой, и выбору подмножества минимальной мощности ≥ 3.</p><p>Вспомним каноническое уравнение прямой:</p><figure><img src="https://media.tproger.ru/user-uploads/33794/2024-02-21/4560122c-42ec-471b-b2ed-8c4608f14061.png" alt="" /></figure><p>Где (α, β, γ)  – координаты вектора, коллинеарного этой прямой.</p><p>Из данного уравнения явным образом следует:</p><figure><img src="https://media.tproger.ru/user-uploads/33794/2024-02-21/b6f49207-3da8-4ba0-b742-4c6d31ea0ff6.png" alt="" /></figure><p>Таким образом, получаем простой алгоритм решения задачи.</p><p>На каждом шаге будем поочерёдно выбирать каждую из N точек за (x0, y0, z0). Разобьём всё остальное множество точек на подмножества по ключу</p><figure><img src="https://media.tproger.ru/user-uploads/33794/2024-02-21/2d121bc2-347a-44c3-887f-eeeab7087200.png" alt="" /></figure><p>и запомним минимальную мощность получившихся подмножеств.</p><p>С точки зрения реализации, удобно перейти от операций с рациональными дробями к операциям с тройкой целых чисел (Δxi, Δyi, Δzi).</p><p>Для этого необходимо нормировать (xi − x0, yi − y0, zi − z0) по НОД(xi − x0, yi − y0, zi − z0).</p><p>Полученный алгоритм будет иметь вычислительную сложность O(n2) и требования к памяти O(n).</p><h3>4. Телепорт</h3><h4>Формулировка задачи</h4><figure><img src="https://media.tproger.ru/user-uploads/33794/2024-02-21/17646ea7-bd61-47b4-8e6f-10aefe375667.png" alt="" /></figure><p>Яндекс.Такси открыло услугу межконтинентальной телепортации автомобилей. Телепорт представляет собой замкнутую область (полигон), в котором одновременно могут находиться несколько автомобилей. Телепорт открывается в определённые моменты времени — заранее они не известны. Одновременно может телепортироваться только одна машина. Если в момент открытия портала в полигоне находится более одного автомобиля, то будет телепортирован тот, который лучше всего синхронизирован с полем телепорта (дольше других непрерывно находился в зоне телепортации). Зная траектории движения автомобилей и моменты времени открытия портала, выведите соответствие порядкового номера открытия портала и автомобиля. Если в момент открытия портала в полигоне не было автомобилей, выведите -1.</p><p>Формат ввода</p><p>В первой строке находится число N — количество вершин в полигоне. В следующей строке находится N пар целых чисел Pxi и Pyi (разделённые пробелом), задающих вершины полигона. Никакие из двух сторон полигона не пересекаются. В следующей строке находится число M — количество автомобилей. Далее следует M строк, в каждой из которых идёт количество треков i-го автомобиля Ti; следом за ней — Ti * 3 целых чисел, разделённых пробелом. Каждая тройка - это одна координата автомобиля, состоящая из времени точки t и координат точки x и y. В следующей строке находится количество открытий телепорта K. За ней на этой же строке через пробел находится K чисел, обозначающих время открытия телепорта Ki. Гарантируется, что все времена будут строго возрастающими.</p><p>Ограничения:</p><p>3 ≤ N ≤ 100</p><p>-109 ≤ Pxi, Pyi, x, y ≤ 109</p><p>0 ≤ M ≤ 104</p><p>1 ≤ K ≤ 104</p><p>0 ≤ t ≤ 106</p><p>0 ≤ Ki ≤ 107</p><p>Суммарное количество всех треков Ti всех автомобилей не превышает 105, при этом каждый автомобиль имеет хотя бы один трек. У каждого автомобиля все треки гарантированно уникальные по времени. Автомобиль находится внутри полигона, если последний его трек (со временем t ≤ Ki) находится внутри полигона.</p><p><b>Формат вывода</b></p><p>Необходимо вывести K целых чисел, где каждое число обозначает идентификатор автомобиля, который телепортируется в соответствующее время, либо -1, если автомобилей в очереди нет. Если несколько автомобилей въехали одновременно, то необходимо вывести тот, у которого меньший идентификатор. Каждый автомобиль может телепортироваться не более одного раза.</p><p><b>Примеры</b></p><p>Входные данные №1</p><p>4</p><p>-1 -1 -1 1 1 1 1 -1</p><p>4</p><p>1 1 -2 1</p><p>1 2 0 0</p><p>1 3 0 0</p><p>1 4 1 1</p><p>5 0 2 4 5 6</p><p>Выходные данные №1</p><p>-1 2 3 4 -1</p><p>Входные данные №2</p><p>4</p><p>-1 -1 -1 1 1 1 1 -1</p><p>4</p><p>2 1 -2 1 3 -1 1</p><p>1 2 0 0</p><p>1 3 0 0</p><p>1 4 1 1</p><p>5 0 2 4 5 6</p><p>Выходные данные №2</p><p>-1 2 1 3 4</p><h3>Разбор задачи</h3><p>Рассмотрим один из подходов к решению задачи.</p><p>При считывании позиций водителей можно сразу определять принадлежность точки заданному полигону. По условию полигон не имеет никаких пересечений, поэтому задача несколько упрощается. Можно воспользоваться алгоритмом с использованием луча, выпущенного из проверяемой точки, и посчитать количество пересечений со сторонами многоугольника.</p><p>Далее можно объединить все позиции водителей с привязкой ко времени и время открытия телепорта в один сортированный список событий и пройти по нему. Тогда задача сводится к поддержанию актуального списка водителей в очереди и их последовательности.</p><p>При появлении очередного трека с координатами, проверяем, был ли этот водитель внутри полигона ранее. Если водитель только что въехал в полигон, то добавляем его в конец очереди (удобнее использовать для этого двусвязный список) и в индекс для быстрого поиска водителя внутри списка. Если водитель выехал из полигона, то по индексу находим его в списке и удаляем из списка и из индекса.</p><p>При открытии телепорта берём первого водителя из списка (или выводим -1, если список пустой) и добавляем его в список исключений, поскольку он уже переместился на другой континент.</p><p>Так как все моменты открытия телепорта строго возрастающие, нет необходимости делать дополнительные индексы, а можно выводить данные сразу по ходу новых открытий телепорта.</p>]]></content:encoded>
    </item>
    <item>
      <title>Полезные приёмы и хитрости C++</title>
      <link>https://tproger.ru/translations/cpp-hints</link>
      <comments>https://tproger.ru/translations/cpp-hints?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Никита Прияцелюк]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/translations/cpp-hints</guid>
      <description><![CDATA[<p>Подборка полезных приёмов и хитростей C++ для олимпиадного программирования: макросы, typedef, точное число π и другие советы.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/translations/cpp-hints">Полезные приёмы и хитрости C++</a>»</p>]]></description>
      <category><![CDATA[C++]]></category>
      <category><![CDATA[Олимпиадное программирование]]></category>
      <category><![CDATA[Переводы]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 31 May 2018 12:15:00 GMT</pubDate>
      <content:encoded><![CDATA[<p>Знать специфику языка, на котором пишешь, всегда полезно. Чем большим количеством особенностей языка владеет разработчик, тем осознанней его код при прочих равных условиях. В материале рассмотрены интересные приёмы и трюки для C++.</p><p>Прим. перев. Стоит отметить, что статья в первую очередь будет полезна для олимпиадного программирования. В продакшне некоторые из этих приёмов могут не оценить.</p><h2>Общие хитрости для C++</h2><p>1. Макрос watch — один из самых полезных приёмов.</p><p>При отладке кода watch(переменная) выведет имя переменной и её значение.</p><p>2. Другие полезные макросы:</p><p>Смотрите также: <a href="https://tproger.ru/translations/c-macro/">Макросы в Си: когда и зачем?</a></p><p>3. Не бойтесь использовать typedef.</p><p>Порой что-нибудь вроде set&lt;pair&lt;long long, pair&lt;int, pair&lt;int, int&gt;&gt;&gt;&gt; можно заменить на set&lt;pair&lt;ll, iii&gt;&gt;.</p><p>4. В качестве наиболее точного значения числа π можно использовать const double pi = 2 * acos(0.0). Желательно использовать именно такой вариант, если иное значение не указано в условии задания.</p><p>5. Никогда не используйте INT_MAX в качестве бесконечности для целых чисел.  В некоторых алгоритмах, например, Флойда–Уоршелла, используются значения вроде ∞+w,  что приведёт к переполнению при использовании INT_MAX.  Вместо этого лучше использовать int oo = 0x3f3f3f3f, поскольку:</p><ul><li>Это число достаточно большое для задач, связанных с целыми числами;</li><li>2 * oo не приведёт к переполнению;</li><li>Все байты равны, поэтому вы без проблем можете использовать memset(array, oo, sizeof(array));</li><li>Его довольно легко запомнить.</li></ul><p>Однако будьте осторожны:  не используйте 0x3f3f3f3f для long long, так как в таком случае фокус уже не пройдёт, и вы потом потратите кучу времени на поиск ошибки.</p><p>6. Для double-бесконечности хорошей идеей будет использовать double inf = 1.0/0.0, поскольку именно так представлено значение бесконечности. У вас не будет переполнения, если вы напишете что-нибудь вроде 2*inf, так как 2*inf равно inf.</p><p>7. Существует встроенная функция для нахождения наибольшего общего делителя двух чисел. Это функция __gcd, доступная в заголовочном файле algorithm. Подробней можно почитать <a href="https://www.geeksforgeeks.org/stdgcd-c-inbuilt-function-finding-gcd/">здесь</a>.</p><p>8. Почти всё о манипуляциях с битами — как установить бит, обнулить бит, быстро умножить/разделить на 2 и т.д. — можно найти <a href="https://www.hackerearth.com/practice/notes/bit-manipulation/">здесь</a> и <a href="https://www.topcoder.com/community/data-science/data-science-tutorials/a-bit-of-fun-fun-with-bits/">здесь</a>.</p><p>9. Не используйте 1 &lt;&lt; x, если x может быть больше 31, так как это неопределённое поведение может привести совсем не к тому результату, который вы ожидаете. Сначала приведите 1 к long long: 1ll &lt;&lt; x.</p><p>10. Вместо if(условие) x++ вы можете написать x += условие. Спецификация C не гарантирует, что true равно 1, но в соревновательном программировании можно предположить, что это сработает.</p><p>11. Всегда компилируйте код с флагом -O2. Ваш алгоритм может тратить слишком много времени на работу, однако компилятор сделает свою оптимизационную магию, и вы уложитесь в нужное время.</p><p>Прим. перев. В олимпиадном программировании оценивается время работы программы на тестирующем сервере, флаги компиляции на котором задаются огранизаторами олимпиады и обычно уже включают флаг -O2.</p><p>12. Стандартные объекты ввода и вывода C++ cin и cout по умолчанию работают быстро. Но их работу замедляет синхронизация с буферами C. Поэтому, если в начале кода написать ios::sync_with_stdio(false), то  cin и cout будут работать так же быстро, как и  printf и scanf, которые вы, однако, больше не сможете использовать.</p><p>13. Не стесняйтесь использовать глобальные переменные. Максимальный размер массива, объявленного в функции main, может быть порядка 106, в то время как размер глобального массива может быть порядка 107.</p><p>Прим.перев. Ограничение на размер массива, объявленного внутри функции, возникает из-за того, что память, выделяемая операционной системой под стек, ограничена.</p><h2>Хитрости для GCC</h2><p>1. Если вы используете GCC, вы можете написать #include &lt;bits/stdc++.h&gt; для импортирования всех стандартных библиотек.</p><p>2. GCC имеет встроенные функции для  проведения определённых манипуляций с битами за постоянное время. Например, __builtin_popcount вычисляет общее количество установленных битов заданного целого числа (для long long используйте __builtin_popcountll).</p><p>Есть множество других встроенных функций, прочитать про которые можно <a href="https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html">здесь</a>.</p><h2>Хитрости для C++11</h2><p>C++11 привнёс некоторые обновления и пару классных вещей. Почти все компиляторы установили эту версию по умолчанию, но если в вашем случае это не так, то используйте флаг -std=c++11 для компиляции.</p><p>Прим. перев. В новых версиях GCC по умолчанию включён более новый стандарт C++14, который включает в себя все возможности C++11.</p><p>1. В заголовочном файле numeric есть полезная функция std::iota. Она заполняет std::vector (или какой-нибудь контейнер) увеличивающимися значениями, начиная с x. Например, iota(v.begin(), v.end(), x).</p><p>2. Вам больше не нужно использовать _pair. Вместо этого вы можете написать ii p = {1, 2} или, например, iii p = {1, {2, 3}}.</p><p>Примечание Иногда {a, b} работает не так, как вы ожидаете . Например, этот код выведет то, что должен:</p><p>Этот код, с другой стороны, не скомпилируется. Дело в том, что в результате инициализации списка просто инициализируются объекты. Вы не можете использовать их без контекста. Больше подробностей <a href="http://en.cppreference.com/w/cpp/language/list_initialization">здесь</a>.</p><p>3. Ключевое слово auto позволяет не указывать явно тип переменной, если вы объявляете и инициализируете её в одном месте. Например, вместо int i = 10 вы можете написать auto i = 10, поскольку компилятор знает, что у i тот же тип, что и у 10. Само собой, без инициализации переменной это не сработает.</p><p>4. В С++11 появилась такая классная штука, как цикл for, основанный на диапазоне. Например, вам не придётся писать for (int i = 0; i &lt; v.size(); i++), потому что теперь есть for (auto &amp;e : v). За подробностями <a href="http://en.cppreference.com/w/cpp/language/range-for">сюда</a>.</p><p>Он очень полезен при обходе std::set или std::map:</p><p>Если вы хотите изменять значения, то используйте спецификатор &amp;, чтобы получить ссылку на содержимое контейнера.</p><p>5. Вы можете написать функцию, которая будет возвращать два и более значений, с помощью std::tuple и std::tie.</p><p>Уже знали все эти хитрости и думаете, что вы эксперт в С++? Тогда пройдите <a href="https://tproger.ru/quiz/cpp-quiz/">наш тест</a> и подтвердите это.</p>]]></content:encoded>
    </item>
    <item>
      <title>Команда МГУ выиграла чемпионат мира по программированию АСМ ICPC</title>
      <link>https://tproger.ru/news/mgu-icpc</link>
      <comments>https://tproger.ru/news/mgu-icpc?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Наташа Маркова]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/mgu-icpc</guid>
      <description><![CDATA[<p>Команда МГУ впервые победила в чемпионате мира АСМ ICPC, а МФТИ занял второе место; золотые медали получили также вузы Пекина и Токио.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/mgu-icpc">Команда МГУ выиграла чемпионат мира по программированию АСМ ICPC</a>»</p>]]></description>
      <category><![CDATA[Олимпиадное программирование]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 19 Apr 2018 11:18:08 GMT</pubDate>
      <content:encoded><![CDATA[<p>Программисты МГУ впервые победили в чемпионате. Согласно общему медальному зачету, второе место и еще одну золотую медаль заняла команда МФТИ. Также золотые медали получили команды Пекинского университета и Университета Токио. Среди российских университетов в первой десятке также оказалась команда ИТМО — в 2017 году она <a href="https://tproger.ru/news/acm-icpc-2017-itmo/">заняла</a> первое место. В этот раз ей досталось девятое место с серебряной медалью.</p><figure><img src="https://media.tproger.ru/uploads/2018/04/df.jpg" alt="" /></figure><h3>Бронзовые призеры</h3><p>Среди российских участников бронзу получила только команда СПбГУ, в 2016 году занявшая первое место. В этом году команда петербургского вуза заняла 14-е место — еще с 17 университетами, получившими бронзовые медали.</p><p>Международная студенческая <a href="https://tproger.ru/experts/22/">олимпиада по программированию</a> АСМ ICPC проводится с 1977 года. С 2000 года российские студенты побеждали на чемпионате 13 раз.</p>]]></content:encoded>
    </item>
    <item>
      <title>23 московские команды прошли в полуфинал чемпионата мира по программированию ACM ICPC</title>
      <link>https://tproger.ru/news/23-moscow-teams-acm-icpc</link>
      <comments>https://tproger.ru/news/23-moscow-teams-acm-icpc?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Вячеслав Шарунов]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/23-moscow-teams-acm-icpc</guid>
      <description><![CDATA[<p>На московском этапе ACM ICPC участвовали более 300 команд, а 23 команды из МФТИ, МГУ и других вузов прошли в полуфинал в Санкт-Петербурге.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/23-moscow-teams-acm-icpc">23 московские команды прошли в полуфинал чемпионата мира по программированию ACM ICPC</a>»</p>]]></description>
      <category><![CDATA[Олимпиадное программирование]]></category>
      <category><![CDATA[Россия]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 27 Oct 2017 18:07:46 GMT</pubDate>
      <content:encoded><![CDATA[<p>С целью повышения популярности чемпионата ACM ICPC среди студентов московский четвертьфинал этого года проводился в два этапа. 8 октября состоялся Moscow Programming Contest, одна восьмая финала чемпионата, в котором приняли участие более 300 команд. Из них 92 команды из 24 университетов прошли в <a href="https://it-edu.mipt.ru/pages/icpc/?utm_source=social&amp;utm_medium=link&amp;utm_campaign=moscowcontest#subregional">Moscow Subregional</a>, состоявшийся 22 октября одновременно на площадках МФТИ и МГУ.</p><h3>Московский этап чемпионата</h3><p>Его победителями стала команда Московского физико-технического института — Moscow IPT Cryptozoology в составе Останина Александра, Голованова Александра и Уварова Никиты. Также по результатам Moscow Subregional <a href="http://icpc.it-edu.mipt.ru/qf2017">определились</a> 23 команды, которые поедут на полуфинал, Nortern Eurasia Programming Contest, который пройдёт в Санкт-Петербурге 2–3 декабря.</p><p>Это команды МФТИ, МГУ, НИУ ВШЭ, НИТУ МИСиС, МАИ, МГТУ им.Баумана, НИЯУ МИФИ и МПГУ. Они были награждены дипломами разных степеней: первой — за решение 7 и более задач, второй — 6 задач, третьей — 4 и 5 задач соответственно.</p><p>Международный финал чемпионата этого сезона пройдёт в Пекине с 15 по 20 апреля 2018 года.</p><h3>Возросшая популярность среди студентов</h3><p>По словам Алексея Малеева, директора Центра развития ИТ-образования МФТИ, в этом году Московский четвертьфинал собрал рекордное количество участников:</p><blockquote>Благодаря развитию сообщества ACM ICPC растёт интерес к спортивному программированию: около тысячи студентов приняли участие в Московском отборочном этапе, выросло число вузов-организаторов площадок, увеличились квоты на прохождение в полуфинал.</blockquote><p>Он также отметил, что Россия уже много лет лидирует в олимпиадном программировании, и для студентов участие в чемпионатах уровня ICPC — это шанс испытать себя, посоревноваться с сильнейшими. Лучшие же студенты получают возможность трудоустроиться практически во все российские и международные IT-компании.</p><h3>Матч между МФТИ и МГУ</h3><p>Также в рамках Четвертьфинала <a href="http://icpc.it-edu.mipt.ru/match2017">состоялся</a> матч между командами МФТИ и МГУ. По правилам матча, в зачёт университету шли суммарные результаты команд, выбранных еще до начала тура. Уже в третий раз победа досталась МФТИ.</p>]]></content:encoded>
    </item>
    <item>
      <title>Команда ИТМО в седьмой раз стала победителем чемпионата мира по программированию ACM-ICPC</title>
      <link>https://tproger.ru/news/acm-icpc-2017-itmo</link>
      <comments>https://tproger.ru/news/acm-icpc-2017-itmo?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Иван Бирюков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/acm-icpc-2017-itmo</guid>
      <description><![CDATA[<p>Команда ИТМО решила 10 из 12 задач быстрее соперников и стала победителем ACM-ICPC 2017; университет первым в мире выиграл финал в седьмой раз.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/acm-icpc-2017-itmo">Команда ИТМО в седьмой раз стала победителем чемпионата мира по программированию ACM-ICPC</a>»</p>]]></description>
      <category><![CDATA[Олимпиадное программирование]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 25 May 2017 19:12:59 GMT</pubDate>
      <content:encoded><![CDATA[<p>В Рапид-Сити (США) 24 мая состоялся финал чемпионата мира по программированию ACM-ICPC 2017. Абсолютными чемпионами стала команда Санкт-Петербургского научно-исследовательского университета информационных технологий, механики и оптики (СПбНИУ ИТМО), решившая 10 задач из 12 быстрее соперников. Петербургский вуз установил новый рекорд в истории соревнования: сборные Университета ИТМО в седьмой раз стали его победителями, что еще не удавалось ни одному вузу в мире.</p><h3>И кто наши герои?</h3><p>Команда победителей состояла из трёх студентов <a href="http://www.ifmo.ru/ru/viewdepartment/24/kafedra_kompyuternyh_tehnologiy.htm">кафедры компьютерных технологий</a>, Владимира Смыкалова, Ивана Белоногова и Ильи Збаня. Главным тренером команды выступил доцент кафедры компьютерных технологий, кандидат технических наук <a href="http://www.ifmo.ru/ru/viewperson/289/stankevich_andrey_sergeevich.htm">Андрей Станкевич</a>, который в прошлом году получил награду ACM ICPC Senior Coach Award за то, что в течение 15 лет его подопечные проходили в финал конкурса.</p><p>В число золотых призёров ACM-ICPC 2017 вошли СПбГУ (прошлогодний победитель), Варшавский и Сеульский университеты. Серебряные медали ACM-ICPC 2017 получили команды Фуданьского университета, Пекинского университета, Университета Синьхуа и МФТИ. «Бронзу» взяли представители Токийского университета, шведского Королевского технологического института, Уральского федерального университета и Корейского института передовых технологий.</p><p>Всего в этом году в финале ACM-ICPC 2017 участвовали 133 команды из всех регионов мира. Само состязание проходило уже в 41 раз.</p>]]></content:encoded>
    </item>
    <item>
      <title>Открыта регистрация на чемпионат по программированию Яндекс.Алгоритм-2017</title>
      <link>https://tproger.ru/news/yandex-algorithm-2017</link>
      <comments>https://tproger.ru/news/yandex-algorithm-2017?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Юлия Черкашина]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/yandex-algorithm-2017</guid>
      <description><![CDATA[<p>Яндекс.Алгоритм проходит в шестой раз: участников ждут несколько раундов, финал в Москве и призовой фонд в размере 540 тысяч рублей.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/yandex-algorithm-2017">Открыта регистрация на чемпионат по программированию Яндекс.Алгоритм-2017</a>»</p>]]></description>
      <category><![CDATA[Олимпиадное программирование]]></category>
      <category><![CDATA[Яндекс]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 10 Apr 2017 19:23:29 GMT</pubDate>
      <content:encoded><![CDATA[<p>Яндекс.Алгоритм — это открытый чемпионат по спортивному программированию. В этом году «Яндекс» <a href="https://yandex.ru/blog/company/yandeks-algoritm-2017">проведёт</a> его в шестой раз.</p><h3>Особенности</h3><ul><li>он проходит на платформе <a href="https://contest.yandex.ru/">Яндекс.Контест</a>, поэтому принять участие можно из любой точки мира;</li><li>это индивидуальное состязание;</li><li>участвовать в чемпионате может любой желающий.</li></ul><h3>Расписание</h3><p>Первые два раунда, разминочный и квалификационный, состоятся в апреле. Отборочный этап — ещё четыре раунда, включая марафонский, — пройдут в мае-июне. Поучаствовать в отборочном этапе смогут все, кто справится хотя бы с одной задачей разминочного или квалификационного раундов.</p><p>Марафонский раунд — нововведение этого года. В отличие от остальных раундов, он продлится 48 часов и будет состоять всего из одной задачи — оптимизационной. Для таких задач не существует полного решения: любой вариант будет лишь приближённым. Чем оптимальнее решение, предложенное участником, тем более высокий балл оно получит.</p><p>Двадцать пять лучших участников по итогам отборочных раундов выйдут в финал. Он назначен на 18 июля и пройдет в Москве в <a href="https://yandex.ru/company/offices/moscow">главном офисе «Яндекса»</a>.</p><h3>Призы</h3><p>Призовой фонд Яндекс.Алгоритма составляет 540 тысяч рублей. За первое место участник получит 300 тысяч рублей, за второе — 150 тысяч, а за третье — 90 тысяч. Участникам чемпионата, вошедшим в топ-512, «Яндекс» подарит фирменные футболки с символикой Алгоритма.</p>]]></content:encoded>
    </item>
    <item>
      <title>Олимпиада «Технокубок»: разбор задач финального раунда</title>
      <link>https://tproger.ru/problems/technocup-final-solutions</link>
      <comments>https://tproger.ru/problems/technocup-final-solutions?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Лапа]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/problems/technocup-final-solutions</guid>
      <description><![CDATA[<p>Финал олимпиады по программированию для школьников прошёл 5 марта: из 3000 участников до очного тура добрались 200, а их задачи приведены с разбором.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/problems/technocup-final-solutions">Олимпиада «Технокубок»: разбор задач финального раунда</a>»</p>]]></description>
      <category><![CDATA[Олимпиадное программирование]]></category>
      <category><![CDATA[Соревнования]]></category>
      <category><![CDATA[Задачки]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Sat, 18 Mar 2017 21:27:56 GMT</pubDate>
      <content:encoded><![CDATA[<p>5 марта прошел финальный раунд «Технокубка» — олимпиады по программированию для школьников. В этом году в ней приняли участие 3000 человек, 200 из которых участвовали в финале. Предлагаем вам взглянуть на задачи очного тура и их разбор.</p><h3>A. Андрюша и носки</h3><h3>B. Место встречи изменить нельзя</h3><h3>C. Андрюша и разноцветные шарики</h3><h3>D. Иннокентий и футбольная лига</h3><h3>E. Подземная лаборатория</h3><h3>F. Аксель и Марстон в Битландии</h3><h3>G. Андрюша и живые барьеры</h3><h3>H. Автобусы и интранет</h3>]]></content:encoded>
    </item>
    <item>
      <title>150 000 рублей за первое место: готовимся к Russian Code Cup, разбирая решения задач предварительного тура</title>
      <link>https://tproger.ru/problems/russian-code-cup-2017</link>
      <comments>https://tproger.ru/problems/russian-code-cup-2017?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Антон]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/problems/russian-code-cup-2017</guid>
      <description><![CDATA[<p>Чемпионат по спортивному программированию стартует 19 марта с призовым фондом 750 тысяч рублей, а за первое место участник получит 150 000 рублей.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/problems/russian-code-cup-2017">150 000 рублей за первое место: готовимся к Russian Code Cup, разбирая решения задач предварительного тура</a>»</p>]]></description>
      <category><![CDATA[Задачи умеренной сложности]]></category>
      <category><![CDATA[Олимпиадное программирование]]></category>
      <category><![CDATA[Материалы от друзей Tproger]]></category>
      <category><![CDATA[Задачки]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 16 Mar 2017 13:25:35 GMT</pubDate>
      <content:encoded><![CDATA[<p>Российский чемпионат по спортивному программированию Russian Code Cup 2017 стартует 19 марта. Талантливые программисты со всего мира вновь будут соревноваться в правильности и скорости решения задач и поборются за призовой фонд в размере 750 тысяч рублей.</p><p>Для участия в чемпионате необходимо зарегистрироваться на <a href="http://www.russiancodecup.ru/">сайте Russian Code Cup</a>. Соревнования пройдут онлайн. С 19 марта стартует предварительный раунд: участники смогут ознакомиться с платформой и оценить свои силы в решении одной типичной задачи. Участие в этом раунде необязательно, а его результаты не влияют на итоги следующих. Ниже в статье вы найдете разборы прошлогодних задач предварительного раунда.</p><p>Основная программа Russian Code Cup традиционно состоит из трех этапов: три квалификационных раунда (2 апреля, 16 апреля и 29 апреля), отборочный раунд (14 мая) и финал (10 сентября). На каждом этапе участникам предстоит решить от четырех до восьми разноплановых задач. Те, кому не повезло в первом квалификационном раунде, могут попытать удачи в следующих. В отборочный тур пройдут по 200 лучших участников с каждой квалификации, а в финале сойдутся 50 лучших программистов.</p><p>Победителю чемпионата достанется главный денежный приз в размере 150 тыс. рублей. За второе и третье место конкурсанты получат 100 и 65 тыс. рублей соответственно.</p><blockquote><i>В прошлом году в Russian Code Cup впервые официально вышел на международную аудиторию. Из 4,5 тысяч участников соревнования более тысячи были англоговорящими: в финальном раунде за титул чемпиона боролись жители стран СНГ, Германии, Финляндии, Японии, Швейцарии, Китая и Южной Кореи</i>, — говорит Ольга Августан, руководитель образовательного направления Mail.Ru Group. —<i>Чемпионат проводится уже в седьмой раз, и с каждым годом конкуренция возрастает, а значит на вершину прорваться становится все сложнее и почетнее.</i></blockquote><p>Задания и техническую часть соревнования обеспечивают специалисты Mail.Ru Group и эксперты университета ИТМО. На странице чемпионата можно изучить подробные правила проведения Russian Code Cup.</p><h3>Задачи предварительного раунда прошлого года</h3><p>Предлагаем вашему вниманию разборы первых трех задач «разогревочного раунда» 2016 года.</p><h4>A. Секретный код</h4><p>Сейчас Марти находится в прошлом и хочет вернуться домой в 1985 год. Он уже влюбил своих родителей друг в друга и нашёл плутоний. Всё, что осталось сделать, — это включить машину времени и отправиться в путь. Здесь Марти ждёт ещё одно испытание. Чтобы включить машину времени, нужно ввести секретный код. Секретный код знает только Док. Марти известно, что все символы, из которых состоит код, различны, а также он знает количество символов. Пока Марти ждёт приезда Дока, он пытается угадать код и вводит различные комбинации символов.</p><p>Ваша задача — написать программу, которая для каждого запроса Марти выдает два числа — количество верных символов, которые стоят на своих позициях, и количество символов, которые встречаются в коде, но стоят на неверных позициях.</p><p>Формат входных данных<br />В первой строке находится строка s — секретный код. Код состоит из латинских заглавных букв и цифр, все символы в коде различные.Во второй строке содержится натуральное число n (1 ≤ n ≤ 105) — количество попыток Марти.</p><p>В каждой из следующих n строк содержится очередная комбинация, которую вводит Марти. Комбинации также состоят из латинских заглавных букв и цифр. Символы в каждой комбинации различны. Длина каждой комбинации совпадает с длиной секретного кода.</p><p>Формат выходных данных</p><p>Для каждого запроса Марти выведите два числа a и b, где a — количество верных, b — количество символов, которые встречаются в коде, но стоят на неверных позициях.</p><p>Примеры</p><p>Входные данные<br />BACKTO1985<br />3<br />BACKTO1958<br />BACKON1985<br />TOYEAR1985</p><p>Выходные данные<br />8 2<br />8 1<br />4 3</p><h4>B. Хаос</h4><p>Расставлять кости домино и наблюдать за их падением — недостаточно интересное занятие для Дока Брауна. Поэтому он придумал более математическое развлечение.</p><p>На доске находятся n чисел. Док много раз применяет следующий алгоритм:</p><ul><li>Выбирает три любых числа, написанных на доске, и стирает их.</li><li>Из этой тройки Док выбирает два числа и вычисляет их среднее арифметическое с округлением вниз.</li><li>Затем он пишет на доске два раза полученное среднее арифметическое.</li></ul><p>Например, если на доске были написаны числа 1, 2 и 4, то после их удаления с доски, Док может написать две 1 (среднее 1 и 2, округленное вниз), две 2 (среднее 1 и 4, округленное вниз) или две 3 (среднее 2 и 4). Процесс останавливается, когда на доске останутся два числа. Ясно, что эти два числа равны.</p><p>Однажды Марти наблюдал за этой забавой, которая похожа на последовательность случайных действий. В конце Док заметил, что оставшиеся на доске одинаковые числа получились максимально возможными. Марти не верит Доку, но он запомнил числа, которые изначально были написаны на доске. Он просит вас написать программу, определяющую максимальное возможное значение чисел, которые могли остаться на доске после выполнения алгоритма.</p><p>Формат входных данных</p><p>В первой строке задано одно целое число n (3 ≤ n ≤ 105) — количество чисел, написанных на доске.</p><p>Вторая строка состоит из n целых чисел ai (1 ≤ ai ≤ 109) — числа, написанные на доске.</p><p>Формат выходных данных</p><p>Выведите одно число — максимальное значение двух чисел оставшихся на доске, которое могло получится.</p><p>Примеры</p><p>Входные данные №1<br />3<br />1 4 2<br />Входные данные №2<br />5<br />3 3 3 3 3</p><p>Выходные данные №1<br />3</p><p>Выходные данные №2<br />3</p><h4>C. Новое приключение Марти и Дока</h4><p>После возвращения Дока на поезде из 1885, он воодушевился идеей перевоплощения разных видов транспорта в машины времени, поэтому, недолго думая, переместился в 2015 и сделал машину времени-самолет. Однако во время испытаний у самолета отказали двигатели, и Доку пришлось катапультироваться, а самолет упал в огромное поле и разбился.</p><p>Теперь части разбившегося самолета надо собрать и утилизировать. Марти вызвался помочь Доку и нарисовал схему поля. У него получился прямоугольник n × m, в каждой клетке которого лежало несколько частей самолета. Марти решил, что удобнее будет утилизировать все части в одном месте, для этого он предложил построить утилизатор в одной из клеток поля. Собирать части самолета будет робот Дока, он умеет делать три действия:</p><ul><li>Находясь в клетке поля, переехать в клетку, соседнюю по стороне;</li><li>Если в текущей клетке поля есть хотя бы одна часть самолета, робот может взять ее с собой (однако, детали слишком тяжелые и больше одной роботу с собой не унести);</li><li>Если робот находится в одной клетке с утилизатором и у него с собой есть часть самолета, он может тут же ее утилизировать.</li></ul><p>Исходно робот находится в одной клетке с утилизатором.</p><p>Теперь главная задача Марти — понять, где надо построить утилизатор, чтобы минимизирновать число действий, которые понадобятся роботу, чтобы утилизировать все части разбитого самолета. Помогите ему с этой задачей.</p><p>Формат входных данных</p><p>В первой строке даны числа n, m (1 ≤ n·m ≤ 106) — размеры поля.</p><p>В i-й из следующих n строк дано описание i-й строки поля — m чисел ai, j (0 ≤ ai, j ≤ 106) — количество частей самолета, расположенных в данной клетке поля.</p><p>Формат выходных данных</p><p>Выведите три числа: r, c и x (1 ≤ r ≤ n, 1 ≤ c ≤ m) — координаты местоположения утилизатора и количество действий, которое придется сделать роботу. Если оптимальных положений утилизатора несколько, выведите любое из них.</p><p>Примеры</p><p>Входные данные №1<br />3 3<br />0 0 0<br />0 1 0<br />0 0 0<br />Входные данные №2<br />3 3<br />2 0 0<br />0 0 0<br />0 2 0</p><p>Выходные данные №1<br />2 2 2</p><p>Выходные данные №2<br />2 1 20</p><p>В разогревочном раунде 2016 года были также еще задачи D и E. После просмотра условий вы можете также ознакомиться с разборами их решений.</p><p>Russian Code Cup входит в число инициатив Mail.Ru Group, направленных на развитие IT-отрасли в России. Наряду с RCC компания проводит чемпионаты <a href="https://tproger.ru/articles/russianaicup-2016/">Russian AI Cup</a> (кстати, турнир 2016 года недавно завершился и мы <a href="https://tproger.ru/interview/russian-ai-cup-winner/">пообщались с победителем</a>), <a href="https://russiandesigncup.ru/">Russian Design Cup</a> и <a href="http://mlbootcamp.ru/main/">Russian ML BootCamp</a>, реализует образовательные проекты Технопарк в МГТУ им. Н. Э. Баумана, Техносфера в МГУ им. М. В. Ломоносова, Технотрек в МФТИ, Техноатом в НИЯУ МИФИ и Технополис в Санкт-Петербургском Политехническом Университете им. Петра Великого.</p>]]></content:encoded>
    </item>
    <item>
      <title>Google купила Kaggle — площадку для проведения соревнований по машинному обучению и анализу данных</title>
      <link>https://tproger.ru/news/google-to-buy-kaggle</link>
      <comments>https://tproger.ru/news/google-to-buy-kaggle?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Саша Ушатинская]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/google-to-buy-kaggle</guid>
      <description><![CDATA[<p>Kaggle собрала около 500 000 специалистов по анализу данных и проводит соревнования, предлагает вакансии и платформу Kernels для работы с данными.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/google-to-buy-kaggle">Google купила Kaggle — площадку для проведения соревнований по машинному обучению и анализу данных</a>»</p>]]></description>
      <category><![CDATA[Олимпиадное программирование]]></category>
      <category><![CDATA[Big Data]]></category>
      <category><![CDATA[Машинное обучение]]></category>
      <category><![CDATA[Google]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 08 Mar 2017 13:24:11 GMT</pubDate>
      <content:encoded><![CDATA[<p>В Сети распространились слухи о том, что Google покупает Kaggle — платформу, на которой <a href="https://www.kaggle.com/competitions">проводятся</a> соревнования по машинному обучению и анализу данных. Официальное подтверждение этой информации ожидается на конференции Google Cloud Next, <a href="https://cloudnext.withgoogle.com/">проходящей</a> на этой неделе в Сан-Франциско.</p><p>Сервис Kaggle был основан компанией GoldBloom в 2010 году. С тех пор он быстро укрепил свои позиции и, несмотря на соперничество в лице DrivenData, TopCoder и HackerRank, за несколько лет собрал огромное активное сообщество специалистов по анализу данных (около 500 000 человек).</p><figure><img src="https://media.tproger.ru/uploads/2017/03/home-work.png" alt="" /></figure><p>Kaggle не только проводит соревнования — на сервисе есть, например, портал по трудоустройству, а также платформа <a href="https://www.kaggle.com/kernels">Kernels</a>, которая позволяет специалистам анализировать массивы данных и обмениваться своими наработками.</p><p>Пока непонятно, что конкретно случится с сервисом после его приобретения Google. Но вряд ли произойдут какие-то значительные изменения — компании сотрудничают, и в конце прошлого месяца они совместно <a href="https://tproger.ru/news/google-youtube-8m-competition/">запустили</a> соревнование по машинному обучению, посвященное классификации видео на YouTube.</p><p>UPD: Google <a href="https://techcrunch.com/2017/03/08/google-confirms-its-acquisition-of-data-science-community-kaggle/">подтвердила</a> приобретение сервиса Kaggle, но не сообщила никаких подробностей о сделке.</p>]]></content:encoded>
    </item>
    <item>
      <title>"ВКонтакте" объявила о начале регистрации на чемпионат по программированию VK Cup 2017</title>
      <link>https://tproger.ru/news/vk-cup-2017</link>
      <comments>https://tproger.ru/news/vk-cup-2017?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Юлия Черкашина]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/vk-cup-2017</guid>
      <description><![CDATA[<p>Соревнование по программированию вместе с Codeforces идёт с марта по июль, призовой фонд — 2,5 млн рублей, команды допускаются до двух человек.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/vk-cup-2017">"ВКонтакте" объявила о начале регистрации на чемпионат по программированию VK Cup 2017</a>»</p>]]></description>
      <category><![CDATA[Интернет]]></category>
      <category><![CDATA[ВКонтакте]]></category>
      <category><![CDATA[Олимпиадное программирование]]></category>
      <category><![CDATA[Соревнования]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 28 Feb 2017 18:11:29 GMT</pubDate>
      <content:encoded><![CDATA[<p>Компания ВКонтакте совместно с Codeforces в очередной раз <a href="https://vk.com/wall-41208167_1134">проводит</a> чемпионат VK Cup, который пройдет с марта по июль 2017 года. К участию допускаются команды в составе до двух человек.</p><p>Жюри чемпионата обещает участникам как интересные задачи в стиле классических алгоритмических соревнований, так и смелые эксперименты, расширяющие этот жанр.</p><figure><img src="https://media.tproger.ru/uploads/2017/02/a031ce093570cb82b18aa5d0b6de84405cfdee2b.png" alt="" /></figure><p>Призовой фонд составит 2,5 млн рублей, и побороться за него может кто угодно: и профессиональные программисты, и простые школьники. Чемпионат ориентирован на аудиторию от 14 до 23 лет. Приз за первое место составит чуть больше миллиона рублей, за второе — около 525 тысяч, за третье же — 262 тысячи. Команды, занявшие 4–8 места, получат по 131 тысяче рублей.</p><p>Лучшие 20 команд по результатам отборочных интернет-этапов, которые начнутся 4 марта, будут приглашены в финал, который состоится в июле этого года в Санкт-Петербурге. Компания обещает покрыть расходы на проезд и проживание финалистов.</p><p>За ходом этого соревнования можно следить <a href="http://codeforces.com/blog/entry/50708">на сайте Codeforces</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Запущен онлайн-курс по программированию от университета ИТМО --- шестикратного чемпиона ACM ICPC</title>
      <link>https://tproger.ru/articles/acm-icpc-course</link>
      <comments>https://tproger.ru/articles/acm-icpc-course?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Полина Корыхалова]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/acm-icpc-course</guid>
      <description><![CDATA[<p>Университет ИТМО открыл на edX бесплатный курс How to Win Coding Competitions; один из авторов, чемпион ACM ICPC Максим Буздалов, делится опытом.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/acm-icpc-course">Запущен онлайн-курс по программированию от университета ИТМО --- шестикратного чемпиона ACM ICPC</a>»</p>]]></description>
      <category><![CDATA[Обучение программированию]]></category>
      <category><![CDATA[Олимпиадное программирование]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 02 Nov 2016 18:26:46 GMT</pubDate>
      <content:encoded><![CDATA[<p>Недавно Университет ИТМО запустил свой первый курс на крупнейшей в мире образовательной онлайн-платформе edX: How to Win Coding Competitions: Secrets of Champions («Как побеждать в соревнованиях по программированию: секреты чемпионов»). Курс бесплатный, на него может записаться любой желающий.</p><p>Один из его авторов, Максим Буздалов рассказывает о том, как когда-то занял последнее место в городской олимпиаде по информатике, а сейчас — чемпион крупнейшей студенческой олимпиады по программированию (ACM ICPC).</p><h3>Мое последнее место в олимпиаде по информатике</h3><p>Максим — доцент кафедры компьютерных технологий Университета ИТМО и чемпион ACM ICPC 2009 года. А программировать он начал давно, еще в детстве, на таком «агрегате», про который сейчас многие и не знают, а остальные уже забыли. Папа Максима собрал своему сыну компьютер-конструктор под названием «Радио 86РК» (самодельный 8-разрядный персональный компьютер, предназначенный для сборки из отдельных радиодеталей). Этот компьютер имел 16 килобайт памяти и два способа писать код — в «машинных кодах» (инструкции на уровне манипуляций с отдельными регистрами, с прописыванием вручную всех адресов переходов) и на Basic.</p><p>«Пришлось овладеть обоими способами, в указанном порядке», — говорит Максим.</p><p>Тогда же Максим начал участвовать в олимпиадах по физике и математике. Соревновательный дух прививали нынешнему чемпиону уже с третьего класса. Позже благодаря своему учителю информатики юный программист заинтересовался и олимпиадами по этому предмету, но, к сожалению, на городском уровне занял «почетное» последнее место.</p><p>«А потом пошло-поехало: диплом третьей степени на Всероссийской олимпиаде, поступление в ИТМО, ну а дальше — знаете…» — улыбается Максим Буздалов.</p><h3>Не хочу работать на Google</h3><p>Сегодня главная деятельность Максима в университете — это наука, а преподавание — лишь ее побочный эффект. Почему не только наука? Максим согласен с утверждением нобелевского лауреата по физике, Ричарда Фейнмана, о том, что ученому просто жизненно необходимо преподавать. Во-первых, потому что без этого можно разучиться внятно доносить свои мысли до других. Во-вторых, общение с молодежью замедляет старение. А в случае с Максимом преподавание помогает ему систематизировать и обобщать свои знания.</p><p>Несмотря на то, что чемпион уже не участвует в соревнованиях, а тренирует студентов, ему и сейчас поступает море предложений. Каждые полгода Google интересуется — не хочет ли он уже наконец-то работать у них? Только вот Максима интересует наука, он хочет ей заниматься и имеет такую возможность благодаря университету. Поэтому в корпорацию его ничем не заманишь.</p><p>Фейнмен когда-то сказал и о том, что ему нравится преуспевать в том, что у него никак не должно было получиться. Так и у Максима, который из ребенка, занявшего последнее место в школьной олимпиаде по информатике, превратился в преподавателя, ученого, в чемпиона ACM ICPC, который отказывает «гуглу» каждые полгода.</p><h3>Секреты чемпионов</h3><p>Когда Университету ИТМО поступило предложение от edX о запуске онлайн-курса на их платформе, тематика курса не была определена. Изначально возникла идея сделать лекции по «введению в олимпиадное программирование». Уже даже курс так назвали: «Introduction to Competitive Programming». Но затем название несколько изменилось, стало более ярким и привлекательным для слушателей, — «How to Win Coding Competitions: Secrets of Champions». Ведь гораздо интереснее узнать секреты чемпионов, чем только войти в курс дела благодаря «введению». Хотя суть осталась той же.</p><p>Несмотря на свое название этот курс больше о программировании, чем о том, как побеждать в соревнованиях. Автор курса замечает, что пока непонятно, как рассказывать в рамках онлайн-лекций о том, как именно побеждать. Ведь этому способствует еще и множество тренировок, к тому же требуется личное общение, разборы разных методов решения самых разных задач. Но ведь и не каждому быть чемпионом.</p><p>И все равно этот курс актуальный и полезный. Чемпион крупнейшей студенческой олимпиады считает, что эти соревнования стали популярными, к тому же их стало больше, но о них все равно надо рассказывать.</p><p>«Когда я был “маленьким”, было два-три таких ресурса, и, может быть, три-четыре серии регулярных соревнований — и все. Сейчас их намного больше», — считает Максим.</p><p>Университет ИТМО — не новичок в онлайн-образовании так же, как и Максим Буздалов. В этом году ИТМО запустил целых 15 курсов на Национальной платформе открытого образования, автором <a href="https://openedu.ru/course/ITMOUniversity/PADS/">одного</a> из них является Максим. Но курс на edX стал первым в своем роде — планировалось, что от курса на русском языке он будет отличаться всем.</p><p>Курс на русском языке, в котором Буздалов является одним из шести авторов, называется «Алгоритмы программирования и структуры данных». Он также о программировании. Но «Секреты чемпионов» на английском языке значительно от него отличаются. Он дает знания о том, чем являются олимпиады по программированию, какие есть ресурсы, какие бывают задачи и как их решать. И многие слушатели курса, действительно, стали изучать эти ресурсы.</p><p>«Также задачи, которые решают студенты, в основной массе взяты с реальных соревнований (правда, некоторые из этих соревнований школьные). Например, шесть из восьми задач первой недели — это задачи с первой базовой Интернет-олимпиады по информатике и программированию 2007 года (эти онлайн-олимпиады для школьников ИТМО проводит и сейчас). «Фишка» именно этого набора задач состоит в том, что «легенды» всех задач рассказывают, как эффективно вести себя на олимпиаде — например, там есть такие задачи, как «Готовьтесь к олимпиаде!», «Генерируйте тесты!», и даже «Расставьте стулья правильно!», – делится автор «Секретов чемпионов».</p><p>Да и сам экзамен, который еще предстоит сдавать слушателям по окончании курса, чтобы получить сертификат о его прохождении, будет копией соревнования по программированию. Экзамен продлится пять часов, а экзаменуемым будет дано восемь реальных олимпиадных задач.</p><figure><img src="https://media.tproger.ru/uploads/2016/11/rsz_course_image.jpg" alt="" /></figure><p>В соавторстве с Максимом Буздаловым выступает Павел Кротков, также чемпион ACM ICPC. У обоих преподавателей накоплен опыт тренировок олимпиадных команд других университетов. На этих тренировках они часто делились разными идеями именно о том, как эффективно расходовать свое время на соревновании — особенно на командном, о том, как программировать, минимизируя число ошибок, и так далее. Авторы хотели уделить этому внимание в своем курсе, но, к сожалению, подобные идеи не ложатся в стандартный образовательный процесс, к тому же их можно отнести к«элитному контенту», который рассчитан уже на более опытных олимпиадников, а не для начинающих, кто как раз является целевой аудиторией курса.</p><p>Вообще, по словам Максима, этот курс для тех, кто уже способен писать какие-либо сложные программы на выбранном им языке программирования, но при этом еще не участвовал или имеет небогатый опыт участия в контестах по программированию и хочет прочувствовать дух этих соревнований.</p><p>Если опять вернуться к названию курса, то оно говорит о том, что в курсе пойдет речь именно о знакомстве с олимпиадами по программированию. Но, тем не менее, это название не отпугивает и новичков в этой области. А записалось таких не меньше четверти. Дело в том, что для слушателей на сайте открыт форум, где они могут писать как свое мнение о курсе, так и свои просьбы о помощи с заданиями.</p><p>Максим говорит, что первые дни после старта курса он «жил» на этом форуме. Автору поступало множество сообщений с edX, чуть ли не в сто раз больше, чем от подобного русского курса. Тогда терпеливому преподавателю приходилось много раз объяснять одно и то же.</p><p>«Приходится по много раз рассказывать, как открывать файлы и читать из них числа — даже с учетом того, что примеры на всех языках уже приведены в специальном разделе для этого. Но есть и довольно опытные участники — им содержания этого курса мало, они хотят больше разных алгоритмов для разных областей. Всем не угодить», – смеется Максим.</p><p>Вообще, перспектив после участия и победы в международной олимпиаде по программированию множество. Например, это предложения от Apple, Facebook, Google, IBM и многих других авторитетов, которые постоянно следят за подобными соревнованиями и выступающими на них программистами.</p><p>«Годами натренированное «чутье» в отношении того, что работает быстрее или точнее. Если такой человек еще и научится писать «читаемые» и поддерживаемые программы — что бывает не со всеми олимпиадниками — то как специалист он будет «рвать всех». Что и происходит, примеров много — от Романа Елизарова, сооснователя DevExperts, до команды олимпиадных программистов, составляющих интеллектуальное ядро компании MemSQL» – утверждает Максим Буздалов.</p><p>Конечно, его курс направлен на помощь начинающим программистам в подготовке к таким соревнованиям. Но сам автор советует не ограничиваться только курсом, но и тренироваться самому. Максим до своей победы в финале ACM ICPC три с половиной года в среднем решал по полторы пятичасовых тренировки в неделю. Кроме того, будущий чемпион проводил много времени, решая задачи, вне этих тренировок. Но сам он при этом заявляет, что среди участников был еще и не самым упорным!</p><h3>Образование будущего</h3><p>Благодаря своему опыту работы в университете и в онлайн-обучении у доцента кафедры компьютерных технологий и автора онлайн-курсов сложилось свое видение будущего сферы образования: оно будет состоять из трех уровней. Классическое образование будет самым элитным и очень дорогим. Следующий уровень — это онлайн-образование с прямым подключением к лектору и возможностью задавать вопросы. И затем уже — массовое онлайн-образование, где преподаватель сделал все возможное, чтобы 95 — 99.9% вопросов решались без его участия: самими слушателями или компьютерами. Но такую перспективу Максим видит через много-много лет, когда число людей перевалит за десяток-другой миллиардов.</p><p>А у самого Максима пока в планах улучшение и расширение существующих курсов, а также есть мысль сделать продвинутый курс по вычислительной геометрии. Но о будущем образования и дате курса Максима Буздалова по вычислительной геометрии нам остается только гадать.</p>]]></content:encoded>
    </item>
    <item>
      <title>Какой смысл имеют олимпиады по программированию? Не поздно ли начать участвовать в них 11-класснику? --- Отвечают эксперты Tproger</title>
      <link>https://tproger.ru/experts/22</link>
      <comments>https://tproger.ru/experts/22?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Лапа]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/experts/22</guid>
      <description><![CDATA[<p>Стоит ли одиннадцатикласснику начинать участвовать в олимпиадах и что даёт такой опыт в промышленной разработке — мнения приглашённых экспертов расходятся.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/experts/22">Какой смысл имеют олимпиады по программированию? Не поздно ли начать участвовать в них 11-класснику? --- Отвечают эксперты Tproger</a>»</p>]]></description>
      <category><![CDATA[Олимпиадное программирование]]></category>
      <category><![CDATA[Карьера]]></category>
      <category><![CDATA[Ответы экспертов]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 20 Oct 2016 16:05:07 GMT</pubDate>
      <content:encoded><![CDATA[<p>Существует мнение, что олимпиадный опыт пагубно сказывается на карьерном росте программиста. Наши эксперты уже делились мнением, <a href="https://tproger.ru/experts/15/">помогают ли олимпиады в реальной работе</a> и <a href="https://tproger.ru/experts/20/">что стоит выбирать между олимпиадами и карьерой</a>. Мнения разошлись, поэтому мы спросили наших экспертов о том, какой же смысл есть в участии в олимпиадах.</p>]]></content:encoded>
    </item>
    <item>
      <title>Задача про обнаружение молекул с Международной олимпиады по информатике 2016 года</title>
      <link>https://tproger.ru/sponsored/ioi-2016</link>
      <comments>https://tproger.ru/sponsored/ioi-2016?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Иван Бирюков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/sponsored/ioi-2016</guid>
      <description><![CDATA[<p>Серебряный медалист IOI 2016 Денис Солонков разбирает олимпиадную задачу про прибор, который находит молекулы с весом в заданном интервале.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/sponsored/ioi-2016">Задача про обнаружение молекул с Международной олимпиады по информатике 2016 года</a>»</p>]]></description>
      <category><![CDATA[C++]]></category>
      <category><![CDATA[Олимпиадное программирование]]></category>
      <category><![CDATA[Материалы от друзей Tproger]]></category>
      <category><![CDATA[Спонсорское]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 07 Oct 2016 08:05:06 GMT</pubDate>
      <content:encoded><![CDATA[<p>В августе этого года в Казани прошла Международная олимпиада по программированию для школьников — IOI 2016. Российская команда стала второй в общем зачете.</p><p>Один из серебряных медалистов, Денис Солонков из г. Мытищи, сделал разбор задачи «Обнаружение молекул», которая предлагалась участникам олимпиады.</p><p>Денис Солонков — многократный победитель Всероссийских олимпиад по программированию и Moscow CTF School, выпускник <a href="https://informatics.ru/?utm_source=vk_tproger">Школы программистов</a>.</p><h2>Условие</h2><p>Петр работает в компании, которая создала прибор для обнаружения молекул. Каждая молекула имеет целый положительный вес. Прибор характеризуется интервалом обнаружения [l, u], где l и u целые положительные числа. Прибор может обнаружить множество молекул тогда и только тогда, когда это множество содержит такое подмножество, что суммарный вес молекул в нем принадлежит интервалу обнаружения прибора.</p><p>Требуется написать программу, которая либо находит любое подмножество молекул с суммарным весом, принадлежащим интервалу обнаружения прибора, либо определяет, что такого подмножества не существует.</p><h2>Детали реализации</h2><p>Вам следует реализовать одну функцию (метод):</p><ul><li>l и u: границы интервала обнаружения,</li><li>w: веса молекул.</li><li>Если требуемое подмножество существует, то функция должна вернуть массив индексов молекул, которые формируют любое такое подмножество. Если существует несколько правильных ответов, верните любой из них.</li><li>Если требуемого подмножества не существует, то функция должна вернуть пустой массив.</li></ul><p>Для языка программирования Си сигнатура функции немного отличается:</p><ul><li>n: количество элементов в w (то есть число молекул),</li><li>остальные параметры такие же, как описано выше.</li><li>Вместо того, чтобы возвращать массив состоящий из m индексов (как указано выше), функция должна записать индексы в первые m ячеек массива result и затем вернуть m.</li><li>Если требуемого подмножества не существует, то функция должна вернуть 0, не записывая ничего в массив result.</li></ul><p>Ваша программа может записывать индексы в возвращаемый массив (или в массив result для языка Си) в любом порядке.</p><p>Пожалуйста, используйте предоставленные шаблоны файлов для уточнения реализации на выбранном вами языке программирования.</p><h2>Примеры</h2><h3>Пример 1</h3><p>В этом примере есть четыре молекулы с весами 6, 8, 8 и 7. Прибор может обнаружить подмножества молекул с суммарным весом от 15 до 17 включительно. Обратите внимание, что 17 − 15 ≥ 8 − 6. Суммарный вес молекул 1 и 3 равен w1 + w3 = 8 + 7 = 15, таким образом функция может вернуть [1, 3]. Другие возможные правильные ответы: [1, 2] (w1 + w3 = 8 + 8 = 16) и [2, 3] (w1 + w3 = 8 + 7 = 15).</p><h3>Пример 2</h3><p>В этом примере есть четыре молекулы с весами 5, 5, 6 и 6. Требуется найти подмножество с суммарным весом от 14 до 15 включительно. Опять же, обратите внимание, что 15 − 14 ≥ 6 − 5. Для данного примера не существует подмножества молекул с суммарным весом от 14 до 15, соответственно функция должна вернуть пустой массив.</p><h3>Пример 3</h3><p>В этом примере есть четыре молекулы с весами 15, 17, 16 и 18. Требуется найти подмножество с суммарным весом от 10 до 20 включительно. Вновь, обратите внимание, что 20 − 10 ≥ 18 − 15. Любое подмножество, состоящее из одного элемента, имеет вес от 10 до 20, соответственно возможные правильные ответы это [0], [1], [2] и [3].</p><h2>Система оценивания</h2><ol><li>(9 баллов): 1 ≤ n ≤ 100, 1 ≤ wi ≤ 100, 1 ≤ u, l ≤ 1000, все wi равны.</li><li>(10 баллов): 1 ≤ n ≤ 100, 1 ≤ wi, u, l ≤ 1000, и max(w0 ,…, wn−1) − min(w0,…, wn−1 ) ≤ 1.</li><li>(12 баллов): 1 ≤ n ≤ 100 и 1 ≤ wi,u , l ≤ 1000.</li><li>(15 баллов): 1 ≤ n ≤ 10 000 и 1 ≤ wi, u, l ≤ 10 000.</li><li>(23 балла): 1 ≤ n ≤ 10 000 и 1 ≤ wi, u, l ≤ 500 000.</li><li>(31 балл): 1 ≤ n ≤ 200000 и 1 ≤ wi, u, l &lt; 231.</li></ol><h2>Пример проверяющего модуля</h2><p>Проверяющий модуль получает данные в следующем формате:</p><ul><li>Строка 1: целые числа n, l, u.</li><li>Строка 2: n целых чисел: w0,…, wn−1.</li></ul><h2>Решение от Дениса</h2><p>Задача уже неплохо формализована. Нам нужно выбрать подпоследовательность чисел из массива w длины n, так, чтобы их сумма лежала в отрезке [l, u]. Также, присутствует странное условие:<br />u − l ≥ wmax − wmin (1)</p><p>Оно явно играет роль в решении задачи, иначе его бы просто не было. Попытаемся понять, что оно нам дает.</p><p>Пусть мы выбрали подпоследовательность элементов с суммой = S и S &lt; l. В таком случае, если мы заменим один из элементов подпоследовательности на какой-то другой, не выбранный нами, то новая сумма S’ ≤ u. Случай, увеличивающий сумму на максимально возможное число, это замена минимального на максимальный элемент, а согласно условию u − l wmax ≥ wmin.</p><p>Вооружившись этим фактом, перейдем непосредственно к решению. Для начала отсортируем массив w, чтобы с ним было удобней работать. Разобьем нашу задачу на два пункта</p><ol><li>Определить L — количество элементов в правильном ответе, или сказать, что его не существует.</li><li>Найти L элементов, сумма которых лежит в [l, u]</li></ol><p>Сначала разберемся во вторым пунктом. Пусть мы знаем, что ответ существует и в нем содержится L элементов. Возьмем первые L элементов отсортированного w. Их сумма точно ≤ u, так как мы условились, что ответ существует. Теперь выполним следующий алгоритм.</p><ol><li>Если текущая сумма больше или равна нижней границы, завершить работу алгоритма</li><li>Заменить минимальный элемент из нашей выборки на максимальный из ещё не выбранных. В случае, если такая замена не увеличивает сумму, то завершить работу алгоритма не проводя её.</li></ol><p>Заметим, что благодаря (1) мы никогда не пересечем верхнюю границу. Почему этот алгоритм точно найдет ответ? Предположим обратное.</p><p>В каждой итерации алгоритм меняет минимальный элемент нашей выборки на максимальный из не выбранных. Если такой элемент меньше нашего, то это значит, что мы выбрали L последних элементов w. Если сумма L максимальных элементов меньше l, значит подходящей подпоследовательности длины L не существует, однако мы условились об обратном. Противоречие.</p><p>Подобный алгоритм можно быстро реализовать, используя встроенную в С++ реализацию сбалансированного дерева поиска: set. Количество итераций алгоритма в худшем случае: n, асимптотика подобного решения будет O(n log n).</p><p>Вернемся к первому этапу решения нашей задачи, а именно в поиске подходящего L. Мы можем просто проверить каждый из них и получить асимптотику O(n2 log n), но это будет слишком долго работать.</p><p>Давайте найдем такую длину i, что сумма первых i элементов больше u. Если такой длины не существует, то будем полагать, что i = n + 1 Из всех таких возьмем минимальную. Я утверждаю, что если правильный ответ существует, то он будет содержать i − 1 элемент. Конечно, могут существовать и другие варианты ответа, но один из них будет содержать в себе такое количество элементов. Докажем это утверждение.</p><p>Пусть L = i − 1, или L = n, если i не существует. Сумма первых L элементов ≤ u, так как L &lt; i. Запустим описанный выше алгоритм поиска подпоследовательности. Если он найдет ответ, то наше утверждение верно. В ином случае, сумма последних L элементов &lt; l. Тогда ответа также не существует для любой длины, меньшей чем L. Просто потому что было взято L максимальных, так что любое количество меньше тоже будет меньше l. Ответа также не существует для всех длин больше L, так как сумма первых i элементов больше, чем u. Значит, ответа вовсе не существует.</p><p>Итого, мы можем найти необходимую длину за O(n), и найти ответ по длине за O(n log n). Значит, время работы всего алгоритма будет O(n log n), что спокойно набирает 100 баллов.</p><h2>Исходный код решения</h2><p>Решение подобных задач требует серьезной подготовки, которую можно получить в <a href="https://informatics.ru?utm_source=vk_tproger">Школе программистов</a>.</p><p>В этом году ШП открывает отделение в Физтехпарке — новом IT-парке рядом с МФТИ. Программа обучения усложненная, такая же, как в отделении при Яндексе, включающая в себя изучение высокоуровневых и низкоуровневых языков, дискретную математику, алгоритмику, структуры данных, сети, ОС и прочее.</p><p>Набор на 2016/17 учебный год проводится для школьников 6–10 классов по результатам экзамена, который состоится 8 октября 2016 в 14:00.</p><p>Для тех, кому ездить в Долгопрудный далеко, есть онлайн отделение. Уроки проходят в формате вебинаров, принимаются студенты со всей России, начиная с 13 лет.</p>]]></content:encoded>
    </item>
    <item>
      <title>Заняться теорией и олимпиадами или пойти на работу в IT-компанию? — Эксперты дают советы начинающим программистам</title>
      <link>https://tproger.ru/experts/20</link>
      <comments>https://tproger.ru/experts/20?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Типичный программист]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/experts/20</guid>
      <description><![CDATA[<p>Эксперты отвечают начинающему программисту, что выбрать: успехи в олимпиадах и теоретические исследования Computer Science или работу в IT-компании.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/experts/20">Заняться теорией и олимпиадами или пойти на работу в IT-компанию? — Эксперты дают советы начинающим программистам</a>»</p>]]></description>
      <category><![CDATA[Олимпиадное программирование]]></category>
      <category><![CDATA[Карьера]]></category>
      <category><![CDATA[Для начинающих]]></category>
      <category><![CDATA[Ответы экспертов]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 15 Sep 2016 21:20:50 GMT</pubDate>
      <content:encoded><![CDATA[<p>Читатель прислал нам несколько вопросов: «Правда ли, что успехи в олимпиадах по программированию (математике) негативно коррелируют с работой в компании? Что лучше: работа в IT-компании или теоретические исследования в области Computer Science?» Мы, конечно же, передали их экспертам и собрали для вас ответы.</p>]]></content:encoded>
    </item>
    <item>
      <title>Олимпиады по программированию — помогают ли они в реальной работе?</title>
      <link>https://tproger.ru/experts/15</link>
      <comments>https://tproger.ru/experts/15?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Типичный программист]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/experts/15</guid>
      <description><![CDATA[<p>Эксперты отвечают, какой смысл в спортивном программировании, важны ли олимпиады для работы над реальными проектами и не поздно ли начинать в 11 классе.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/experts/15">Олимпиады по программированию — помогают ли они в реальной работе?</a>»</p>]]></description>
      <category><![CDATA[Обучение программированию]]></category>
      <category><![CDATA[Олимпиадное программирование]]></category>
      <category><![CDATA[Карьера]]></category>
      <category><![CDATA[Ответы экспертов]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 26 Feb 2016 14:47:45 GMT</pubDate>
      <content:encoded><![CDATA[<p>Нас часто спрашивают про спортивное программирование. Какой смысл имеют олимпиады? Насколько они важны при работе над реальным проектом? Если важны, то поздно ли начать заниматься данным направлением 11-класснику? Мы, конечно же, передали вопросы экспертам.</p>]]></content:encoded>
    </item>
    <item>
      <title>Как эффективно подготовиться к олимпиадам по программированию?</title>
      <link>https://tproger.ru/experts/8</link>
      <comments>https://tproger.ru/experts/8?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Типичный программист]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/experts/8</guid>
      <description><![CDATA[<p>Советы экспертов о подготовке к соревнованиям по правилам ACM ICPC и похожим олимпиадам школьников: с чего начинать и как учиться решать задачи.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/experts/8">Как эффективно подготовиться к олимпиадам по программированию?</a>»</p>]]></description>
      <category><![CDATA[Олимпиадное программирование]]></category>
      <category><![CDATA[Советы]]></category>
      <category><![CDATA[Ответы экспертов]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 06 May 2015 21:19:53 GMT</pubDate>
      <content:encoded><![CDATA[<p>Скоро стартует вторая <a href="https://vk.com/tproger_olymp">олимпиада Типичного программиста</a>, и мы решили спросить у экспертов, как можно успешно к подготовится к подобным соревнованиям.</p>]]></content:encoded>
    </item>
    <item>
      <title>Чемпионаты Mail.Ru Group для программистов</title>
      <link>https://tproger.ru/articles/mail-ru-group-contests-for-programmers</link>
      <comments>https://tproger.ru/articles/mail-ru-group-contests-for-programmers?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Типичный программист]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/mail-ru-group-contests-for-programmers</guid>
      <description><![CDATA[<p>Соревнования Mail.Ru Group собирают новичков и опытных разработчиков: сложные задачи от экспертов отрасли, призы и внимание работодателей и инвесторов.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/mail-ru-group-contests-for-programmers">Чемпионаты Mail.Ru Group для программистов</a>»</p>]]></description>
      <category><![CDATA[Олимпиадное программирование]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 30 Mar 2015 17:04:35 GMT</pubDate>
      <content:encoded><![CDATA[<p>Чемпионаты Mail.Ru Group — это огромная площадка, на которой встречаются начинающие программисты, продвинутые специалисты и легенды IT-сообщества. Победители чемпионатов получают не только ценные или денежные призы, но, что самое главное, возможность привлечь внимание потенциальных работодателей и инвесторов.</p><p>Конечно, чтобы стать одним из победителей, придется постараться. Участникам необходимо решить по-настоящему сложные задачи, которые для них подготовили лучшие эксперты IT-отрасли и ведущие профильные университеты России.</p><p>Сейчас в активной фазе находится Russian Code Cup (RCC) — самое масштабное в мире русскоязычное соревнование по спортивному программированию. Победители чемпионата завоюют звание лучших программистов года и разделят призовой фонд в размере 750 000 рублей. Подробная информация и примеры задач доступны на <a href="http://www.russiancodecup.ru/">сайте чемпионата</a>.</p><p>Помимо RCC Mail.Ru Group проводит чемпионаты:</p><p>— <a href="http://www.russiancodecup.ru/">Russian AI Cup</a> — ежегодный чемпионат по программированию искусственного интеллекта на примере игровых стратегий. На текущий момент состоялись уже три сезона игр, первая из которых называлась CodeTanks — участники программировали искусственный интеллект для танков, сражающихся в виртуальном пространстве песочницы, двух раундов и финала. В 2013 году в игре CodeTroopers участники создавали интеллект для отряда бойцов, а в 2014 году – для хоккейной команды. Победитель чемпионата 2014 года получил приз — Mac Pro, занявшие 2 и 3 места —MacBook Pro и MacBook Air соответственно. В чемпионате на сегодняшний день приняло участие около 5000 программистов из более чем 17 стран. Разработка игры 2015 года уже началась, но тематика пока держится в секрете.</p><p>— <a href="http://russiandevcup.ru/">Russian Developers Cup</a> — конкурс, целью которого является создание эффективных команд для разработки оригинальных проектов: от идеи до рабочего прототипа. В ходе конкурса участники — разработчики, архитекторы, дизайнеры — смогут не только заявить о своей уникальной идее, но и получить советы и помощь IT-сообщества, а также собрать свою команду для успешной разработки и возможной реализации проекта. Отличительной особенностью Russian Developers Cup является его образовательный характер. На каждом этапе конкурса участникам будут предложены специально разработанные образовательные материалы, которые помогут успешно реализовать свои идеи.</p><p>В 2014 году в чемпионате приняло участие 1825 человек, составивших более 270 проектов. Призовой фонд чемпионата 2014 года составил $18000.</p><p>— <a href="http://russiandevcup.ru/">Russian Design Cup</a> — это открытый конкурс как для сильных, так и для начинающих дизайнеров и проектировщиков интерфейсов. На пути к финалу участникам предстоит столкнуться с задачами из реальной жизни крупных компаний, разнообразными платформами, новыми гаджетами и хитрыми задачами с собеседований. Поскольку конкурс творческий, зачастую у задач не может быть единственного правильного решения, поэтому решения оцениваются членами жюри. Победители 2014 года получили достойные награды — Mac Pro, MacBook Pro и MacBook Air, а также сертификаты на мастер-классы и множество профессиональных книг.</p><p>Сейчас команда образовательных проектов Mail.Ru Group работает над разработкой еще одного чемпионата — конкурса в области Data Mining и машинного обучения, анонс которого состоится чуть позже. Следите за новостями.</p><p>Кстати, о регистрации. Все чемпионаты теперь объединены под одним названием: <a href="http://cups.mail.ru">Russian Code Cups</a>. И во всех соревнованиях в этом году реализуется единая система авторизации. У всех участников чемпионатов будет единый аккаунт, в каком бы соревновании они ни решили участвовать, регистрацию понадобится пройти только один раз. Логин и пароль можно использовать для входа на сайт любого нашего чемпионата.</p>]]></content:encoded>
    </item>
  </channel>
</rss>