Codeforces что это
Перейти к содержимому

Codeforces что это

Codeforces что это

awoo → Educational Codeforces Round 130 [рейтинговый для Div. 2]
SlavicG → Codeforces Round #799 (Div. 4)
eng3zim → Is beethoven97 a hacking bot?!
ciara → help .
don0thing → Your daily routine!
sachinjaiswal → TLE or Not
Svlad_Cjelli → Using Rust for programming contests
Everule → An intuition and simpler proof for Kirchoff's tree theorem
adamant → Submask range queries
BiNARy__Beast__ → How Is o(n^2) accepted for problem C(n <= 1e5)?
george_stelian → "Adolescent Grigore Moisil" (AGM) International Programming Contest 2022
Noam527 → Attempting to Extend Segment Trees to Arbitrary Subsets
Eren-Jaeger → STL #1 Round Editorial
mohammadaf2212 → A Contest in The Jungle
adamant → Nimbers and Sprague-Grundy theorem
Ripatti → Разбор задач Codeforces Round #125
ldyllic → Facebоok (Meta) Hacker Cup 2022
kostka → Unofficial list of IOI 2022 participants
n0sk1ll → Editorial for Codeforces Round #798 (Div. 2)
variety-jones → CF Stress: A highly customizable no-code tool to stress test CF problems
chokudai → Aising Programming Contest 2022(AtCoder Beginner Contest 255) Announcement
pili → GraalVM
kevin → TJIOI 2022 Results
introart → [Need Help] CSES — Planet Cycles
MikeMirzayanov → Изменение правил об использовании стороннего кода в соревнованиях Codeforces

Часто задаваемые вопросы

Автор MikeMirzayanov, 11 лет назад ,

Вопросы и ответы:

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

Тегиcodeforces, faq, помощь, чаво, часто задаваемые вопросы

Codeforces что это

awoo → Educational Codeforces Round 130 [рейтинговый для Div. 2]
SlavicG → Codeforces Round #799 (Div. 4)
eng3zim → Is beethoven97 a hacking bot?!
ciara → help .
don0thing → Your daily routine!
sachinjaiswal → TLE or Not
Svlad_Cjelli → Using Rust for programming contests
Everule → An intuition and simpler proof for Kirchoff's tree theorem
adamant → Submask range queries
BiNARy__Beast__ → How Is o(n^2) accepted for problem C(n <= 1e5)?
george_stelian → "Adolescent Grigore Moisil" (AGM) International Programming Contest 2022
Noam527 → Attempting to Extend Segment Trees to Arbitrary Subsets
Eren-Jaeger → STL #1 Round Editorial
mohammadaf2212 → A Contest in The Jungle
adamant → Nimbers and Sprague-Grundy theorem
Ripatti → Разбор задач Codeforces Round #125
ldyllic → Facebоok (Meta) Hacker Cup 2022
kostka → Unofficial list of IOI 2022 participants
n0sk1ll → Editorial for Codeforces Round #798 (Div. 2)
variety-jones → CF Stress: A highly customizable no-code tool to stress test CF problems
chokudai → Aising Programming Contest 2022(AtCoder Beginner Contest 255) Announcement
pili → GraalVM
kevin → TJIOI 2022 Results
introart → [Need Help] CSES — Planet Cycles
MikeMirzayanov → Изменение правил об использовании стороннего кода в соревнованиях Codeforces

Codeforces Round #799 (Div. 4)

Автор SlavicG, 9 часов назад ,

The format of the event will be identical to Div. 3 rounds:

  • 5-8 tasks;
  • ICPC rules with a penalty of 10 minutes for an incorrect submission;
  • 12-hour phase of open hacks after the end of the round (hacks do not give additional points)
  • after the end of the open hacking phase, all solutions will be tested on the updated set of tests, and the ratings recalculated
  • by default, only "trusted" participants are shown in the results table (but the rating will be recalculated for all with initial ratings less than 1400 or you are an unrated participant/newcomer).

We urge participants whose rating is 1400+ not to register new accounts for the purpose of narcissism but to take part unofficially. Please do not spoil the contest for the official participants.

Only trusted participants of the fourth division will be included in the official standings table. This is a forced measure for combating unsporting behavior. To qualify as a trusted participant of the fourth division, you must:

  • take part in at least five rated rounds (and solve at least one problem in each of them),
  • do not have a point of 1400 or higher in the rating.

Regardless of whether you are a trusted participant of the fourth division or not, if your rating is less than 1400 (or you are a newcomer/unrated), then the round will be rated for you.

And thanks to NEAR for supporting this round, details can be found in this post.

We suggest reading all of the problems and hope you will find them interesting!

Good Luck!

Educational Codeforces Round 130 [рейтинговый для Div. 2]

Автор awoo, история, 39 часов назад ,

Продолжается серия образовательных раундов в рамках инициативы Harbour.Space University! Подробности о сотрудничестве Harbour.Space University и Codeforces можно прочитать в посте.

Этот раунд будет рейтинговым для участников с рейтингом менее 2100. Соревнование будет проводиться по немного расширенным правилам ICPC. Штраф за каждую неверную посылку до посылки, являющейся полным решением, равен 10 минутам. После окончания раунда будет период времени длительностью в 12 часов, в течение которого вы можете попробовать взломать абсолютно любое решение (в том числе свое). Причем исходный код будет предоставлен не только для чтения, но и для копирования.

Вам будет предложено 6 или 7 задач на 2 часа. Мы надеемся, что вам они покажутся интересными.

Задачи вместе со мной придумывали и готовили Адилбек adedalic Далабаев, Владимир vovuh Петров, Иван BledDest Андросов и Максим Neon Мещеряков. Также большое спасибо Михаилу MikeMirzayanov Мирзаянову за системы Polygon и Codeforces.

Удачи в раунде! Успешных решений!

Harbour.Space

Также от наших друзей и партнёров из Harbour.Space есть сообщение для вас:

Мы рады сообщить о замечательной возможности работы и учебы с Vodafone.

Компания Vodafone Group в партнерстве с Harbour.Space University предлагает стипендии для получения степени бакалавра и магистра в области компьютерных наук, информатики, кибербезопасности и разработки программного обеспечения, а также магистра бизнес-администрирования, и опыт работы в одной из ведущих телекоммуникационных компаний Великобритании.

Vodafone Group открывает новый технологический центр в Малаге, международный центр передового опыта, посвященный исследованиям и разработке технических решений, таких как безопасные сети, разработка 5G и 6G, Open RAN, IoT, MPN & MEC и UCC для Vodafone Business, платформ и корпоративных решений.

Мы ищем различные позиции от младшего до среднего (или старшего) звена в различных областях, таких как:

  • Front-end разработка
  • Full-stack разработка
  • Backend разработка
  • Техническая архитектура
  • Архитектура предприятия

Harbour.Space

ТРЕБОВАНИЯ К ОБУЧЕНИЮ

Общие требования:

  • Аттестат о среднем общем образовании или диплом бакалавра (предыдущий опыт работы обязателен при подаче заявки на получение степени магистра)
  • Резюме или профиль LinkedIn (ваш рейтинг Codeforces должен быть внесен в ваше резюме)
  • Свободное владение английским языком (испанский приветствуется)

Требования для Frontend разработчика:

  • Опыт работы в Angular не менее 1-3 лет.
  • Опыт работы в React не менее 1-3 лет.
  • Уверенное знание основ веб-платформ: HTML, JavaScript и CSS.
  • Разработка и внедрение приложений с низкой задержкой, высокой доступностью и производительностью
  • Определение/построение конвейеров CI/CD с использованием таких инструментов, как Jenkins, Sonar, Kiuwan.

Требования для Full-Stack разработчика:

  • Минимум 3 года подтвержденного опыта разработки платформ (среда на основе CDI/DevOps). С одним или несколькими из следующих:
  • Java SE/ Javascript
  • Сценарные языки, то есть python, perl, shell scripts.
  • Подтвержденный опыт работы с backend и frontend программными системами и веб-приложениями.
  • Подтвержденный опыт работы с HTPP, MQTT, LwM2M, Kafka, различными базами данных (SQL и не-SQL).
  • Знание облачной разработки.
  • Практический опыт работы с инструментами CDI.

Требования для Java разработчика:

  • Отраслевой опыт работы с программными платформами в Linux, локально и в облаке
  • Хорошее понимание серверных технологий
  • Сильные академические знания и профессиональный опыт разработки программного обеспечения: Java Enterprise, Oracle, Linux, Windows
  • Хорошее понимание инструментов системного мониторинга и сред автоматизированного тестирования
  • Опыт работы с SQL, XML, JSON и CSV
  • Опыт предоставления и поддержки преобразований и API для клиентов и партнеров
  • Хорошее понимание баз данных — Oracle, MongoDB, ElasticSearch.
  • Хорошее понимание фреймворков Java, SpringBoot, Spring technologies
  • Хорошее понимание контейнерных систем (docker) и оркестраторов (docker compose, Kubernetes) и технологий обмена сообщениями, kafka, rabbitmq
  • Хорошее понимание оболочки Unix, Perl, python для выполнения задач автоматизации и обслуживания, а также среды CI/CD
  • Образование на уровне бакалавра в области телекоммуникаций или смежных дисциплин с опытом разработки программного обеспечения

Желаем удачи и до встречи в следующий раз!

Анонс Educational Codeforces Round 130 (рейтинговый для Div. 2)

Codeforces Round #798 (Div. 2)

Автор wxhtzdy, история, 6 дней назад ,

We are glad to invite you to Codeforces Round #798 (Div. 2) which will start on Jun/10/2022 19:35 (Moscow time) . Please notice the unusual time. You will be given 5 problems and 2 hours to solve them.

The round will be rated for participants of Division 2 with a rating lower than 2100. Division 1 participants can participate unofficially in the round.

All problems are prepared by n0sk1ll and me. We would like to thank:

    , nor, Riblji_Keksic, AlperenT, Sarvesh10 for testing this round and providing valuable feedback! for coordinating! for creating amazing Codeforces and Polygon platforms!

Thanks to NEAR for supporting this round, details can be found in this post.

We are looking forward to your participation!

Score Distribution:

Анонс Codeforces Round #798 (Div. 2)

Codeforces Round #797 (Div. 3)

Автор Vladosiya, история, 7 дней назад ,

Привет! Во 07.06.2022 17:35 (Московское время) начнётся Codeforces Round #797 (Div. 3) — очередной Codeforces раунд для третьего дивизиона. В этом раунде будет 6-8 задач, которые подобраны по сложности так, чтобы составить интересное соревнование для участников с рейтингами до 1600. Однако все желающие, чей рейтинг 1600 и выше могут зарегистрироваться на раунд вне конкурса.

Раунд пройдет по правилам образовательных раундов. Таким образом, во время раунда задачи будут тестироваться на предварительных тестах, а после раунда будет 12-ти часовая фаза открытых взломов. Мы постарались сделать приличные тесты — так же как и вы, мы будем расстроены, если у многих будут падать решения после окончания контеста.

Вам будет предложено 6-8 задач и 2 часа 15 минут на их решение.

Штраф за неверную попытку в этом раунде (и последующих Div. 3 раундах) будет равняться 10 минутам.

Напоминаем, что в таблицу официальных результатов попадут только достоверные участники третьего дивизиона. Как написано по ссылке — это вынужденная мера для борьбы с неспортивным поведением. Для квалификации в качестве достоверного участника третьего дивизиона надо:

  • принять участие не менее чем в пяти рейтинговых раундах (и решить в каждом из них хотя бы одну задачу),
  • не иметь в рейтинге точку 1900 или выше.

Независимо от того являетесь вы достоверными участниками третьего дивизиона или нет, если ваш рейтинг менее 1600, то раунд для вас будет рейтинговым.

Спасибо MikeMirzayanov за платформы, помощь с идеями для задач и координацией нашей работы. Задачи были придуманы и написаны командой Университета ИТМО: MikeMirzayanov, MisterGu, myav, Gol_D, Aris, SixtyWithoutExam, мной Vladosiya.

UPD:Разбор

Анонс Codeforces Round #797 (Div. 3)

Codeforces Round #796

Автор huangzirui, история, 2 недели назад ,

Hi Codeforces! Happy Dragon Boat Festival!

We are glad to invite you to our first Codeforces Round Codeforces Round #796 (Div. 1) and Codeforces Round #796 (Div. 2) which will be held on Jun/03/2022 17:35 (Moscow time) . This round will be rated for participants of both divisions. Participants in each division will be offered 6 problems and 2 hours to solve them. The two divisions will share 3 problems.

In this round, as the best friend of the characters in Touhou Project, you are going to help them solve the problems they meet.

The problems are prepared by xiaoziyao, Yakumo_Ran, SSerxhs, Cocoly1990, LilyWhite, E legia and me. We hope you will enjoy this round.

Great thanks to:

    for good coordination of this round and translating all statements to Russian, for providing most tasks, for preparing most tasks, for polishing statements, , Q AQAutoMaton, M iracleFaFa, Kevin114514, Suika_predator, loveye, Serval, ix35, Ilith, mrsrz, SanweiTreap, Eden_CY,wind_whisper,xuezhe, Cocoly1990, K-H, macneil, lox123, arseny.__., nhc, SCL_, kucipendik for testing our round, , huhaoo, juju054, JohnVictor and Zcusss for other help, for the amazing Codeforces and Polygon platforms. for supporting this round, details can be found in this post.

Please pay attention that there will be no more than 998244353 interactive problems in this round, so learn more about interactive problems here before the contest.

Good luck & Have fun!

UPD 1:

Score Distribution:

Div2: $$$500 — 750 — 1250 — 1500 — 2000 — 3000$$$

Div1: $$$500 — 750 — 1500 — 1500 — 2000 — 3000$$$

UPD 2:

UPD 3:

Winners

Div.1:

Div.2:

Анонс Codeforces Round #796 (Div. 1)
Анонс Codeforces Round #796 (Div. 2)
Тегиannouncement, contest

CodeCraft-22 and Codeforces Round #795 (Div 2.)

Автор amul_agrawal, 2 недели назад ,

Namaste Codeforces!

We are excited to invite everyone to CodeCraft-22 which will take place on May/31/2022 17:35 (Moscow time) . It is rated for all people who are below yellow ! (rating under 2100)

The Programming Club at IIIT-H organizes this event under Threads’22, as a part of our techno-cultural fest Felicity, IIIT Hyderabad.

There are 6 Problems with 2 hours to solve them. The scoring distribution will be released soon!

We have worked hard to keep the statements clean and the pretests strong! After the contest, step-wise tutorial and video tutorial will be released along with the code!

  • This round was wonderfully co-ordinated by darkkcyan and K AN orz!
  • This round was a joint effort by rahulgoel, menavlikar.rutvij, ltc.groverkss, akcube, fangahawk, JadeReaper, keyurchd_11 and me! also translated the statements to Russian! благодарю вас
  • We would like to thank our army of testers for providing valuable feedback: generic_placeholder_name, Lomk, TheScrasse, ta4p, codelegend, BucketPotato, ajit, manish.17, Dragonado, anmolagarwal999, KazamaHoang, kryptai, ak2006 and brj!
  • Thanks to nandini.maroo and akcube for helping with the poster design.
  • And finally, we would thank MikeMirzayanov for the platforms Codeforces and Polygon without which all this would not be possible.

We hope you enjoy this contest!

UPDATES

Score Distribution: 500 — 750 — 1250 — 1750 — 2250 — 2750
Editorial is out.

Winners

Congratulations to all the winners for such an amazing performance.
Global Top 5
1. t ourist
2. k sun48
3. noimi
4. j iangly
5. U m_nik

We will send a CF personal message to the winners of the T-shirts soon.

PRIZES

The following twenty lucky participants receive a T-shirt:

  • Top 10 Indian participants.
  • Random 10 from top 100 (ranks 11-100) Indian participants.

These ranks are determined from the combined unofficial rank list. People who have their Country set to India in their CF profile will qualify as Indian participants.

We are giving T-shirts to Indian participants only to avoid logistic issues that we have to face during international delivery. We apologize for this limitation, we will try our best to bring international prizes too from next year.

Thanks to NEAR for supporting this round, details can be found in this post.

Анонс CodeCraft-22 and Codeforces Round #795 (Div. 2)
Тегиannouncement, contest

Codeforces Round 794 Announcement

Автор antontrygubO_o, 3 недели назад ,

  • Contest URLs: https://codeforces.com/contest/1685,https://codeforces.com/contest/1686
  • Unusual start time: May/25/2022 20:35 (Moscow time)
  • Duration: 135 minutes
  • Number of Tasks: 6 for Div2, 5 for Div1
  • Rated range: $$$(-\infty, 1899]$$$ for Div2, $$$[1900, \infty)$$$ for Div1
  • Writer: antontrygubO_o
  • Testers: golions, oleh1421, G eothermal, nor, TheScrasse, timreizin, emorgan5289, U m_nik, m hq, Kuroni, ak2006
  • VIP-tester: errorgorn
  • Coordinator and author of one problem without which round would be unbalanced: dario2994
  • Creator of the amazing Codeforces and Polygon platforms: MikeMirzayanov

The point values will be:

Div2: 500 — 1000 — 1500 — 2000 — 2500 — 2500

Div1: 500 — 1000 — 1500 — (1500 + 1500) — 3500

We are looking forward to your participation!

UPD 1: Thanks to NEAR for supporting this round, details can be found in this post.

UPD 2: Editorial

UPD 3: Congratulations to winners!

Div1:

Div2:

Анонс Codeforces Round #794 (Div. 1)
Анонс Codeforces Round #794 (Div. 2)

Educational Codeforces Round 129 [рейтинговый для Div. 2]

Автор awoo, история, 3 недели назад ,

Продолжается серия образовательных раундов в рамках инициативы Harbour.Space University! Подробности о сотрудничестве Harbour.Space University и Codeforces можно прочитать в посте.

Этот раунд будет рейтинговым для участников с рейтингом менее 2100. Соревнование будет проводиться по немного расширенным правилам ICPC. Штраф за каждую неверную посылку до посылки, являющейся полным решением, равен 10 минутам. После окончания раунда будет период времени длительностью в 12 часов, в течение которого вы можете попробовать взломать абсолютно любое решение (в том числе свое). Причем исходный код будет предоставлен не только для чтения, но и для копирования.

Вам будет предложено 6 или 7 задач на 2 часа. Мы надеемся, что вам они покажутся интересными.

Задачи вместе со мной придумывали и готовили Адилбек adedalic Далабаев, Владимир vovuh Петров, Иван BledDest Андросов и Максим Neon Мещеряков. Также большое спасибо Михаилу MikeMirzayanov Мирзаянову за системы Polygon и Codeforces.

Раунд основан на Межвузовской олимпиаде г. Саратова, поэтому просим воздержаться от участия тех, кто уже знаком с задачами.

Удачи в раунде! Успешных решений!

Анонс Educational Codeforces Round 129 (рейтинговый для Div. 2)

Codeforces Round #793 (Div. 2)

Автор CoderAnshu, 3 недели назад ,

I am pleased to invite you to Codeforces Round #793 (Div. 2), which will take place on May/22/2022 17:35 (Moscow time) . You will be given 6 problems and 2 hours to solve them.

The round will be rated for participants of Division 2 with a rating lower than 2100. Division 1 participants can participate unofficially in the round.

All problems in this round were prepared by me and rivalq. We have worked on this round for a long time and hope you find every problem interesting.

I would like to thank:

    for marvellous coordination of the round. , kclee2172, AmShZ, nvmdava, TheScrasse, aryanc403, koderkushy, PurpleCrayon, nor, AlperenT, towrist, ExplodingFreeze, conquered, naresh0839, The_Hawkeye, Siuuuuu_7, GuptaSir, sp005, obliviousz, davidgarg20, ak2006, and the_hyp0cr1t3 for testing this round and giving really valuable feedback. for the amazing Codeforces and Polygon platforms!
  • You for participating and upvoting. for supporting this round, details can be found in this post.

Score Distribution:

750 – 1000 – 1500 – 2000 – 2500 – 2750

Good luck and have fun! See you in the standings. Make sure to read the statements very carefully.

Thanks to ak2006, video editorials for some of the problems will be available on his channel after the round.

Congratulations to winners!!

Special mention to AwakeAnay for the only Indian to AK the round!

UPD 1: Links to video editorials of Problem B and Problem C

UPD 2: Editorial for problems A-D is here.

UPD 3: Editorial for E is added.

UPD 4: Editorial for F is added.

Анонс Codeforces Round #793 (Div. 2)
Тегиcodeforces, 793, indian round

EPIC Institute of Technology

Автор deltixlab, 4 недели назад , перевод,

We are excited to announce the grand opening of EPIC Institute of Technology! EPIC Institute of Technology, a part of EPIC — EPAM Product Innovation Center, is truly a unique educational organization driven by the Deltix team under the EPAM Systems umbrella.

EPIC Institute of Technology is online and entirely free institute. We offer three programs: Complex Logic, Real-Time Backend, and Time-Series Analysis. The training will last one year and consist of two semesters. Groups for each program will be formed based on the results of the entrance exam, which will be held in the end of May/beginning of June 2022. The exact dates will be provided in the near future.

Successful graduates, and even current students, will have access to the power and resources of EPAM and an incredible chance to jumpstart their career by just using their talent and skill. We will offer our students a unique and straightforward path to the most challenging and exciting projects on a global scale, and an opportunity to learn from and work with industry-leading professionals.

Most recently, we told you that we can offer paid part-time jobs for those who are interested. To our and your happiness, the offer is still valid! Fill out the following form for teaching and we will contact you.

Please visit our website to learn more about EPIC Institute of Technology and our programs. Also, basic information about the institute will be published in our Telegram channel.

UPD: We are pleased to announce that the first entrance exam will be held at Codeforces on June 11th. The detailed information about the competition and access to it will be shared a few days before the exam.

We remind you to register on our website to take the exam. There you can also find some tasks to practice.

UPD: You can now join our group on Codeforces to stay in tune with all our activities, contests, and exams.

We would like to ask you to fill out your personal information in your Codeforces profile for quick identification. Register in the group. Confirmation of your registration is not automatic and may take some time. Please be aware, that all entrance exams will also be held in this group and you must be registered to take part.

In Contests tab, you can find a trial competition for you to get familiar with the testing system and the types of problems that may be a part of the entrance exam. Please register for the contest to be able to submit your solutions.

«Если хочешь разобраться, найдешь возможность»: говорим о Codeforces с основателем проекта

Михаил Мирзаянов, разработавший платформу Codeforces и участвующий в жизни Университета ИТМО в роли ассистента факультета информационных технологий и программирования, делится историей проекта и рассуждает о некоторых особенностях спортивного программирования.

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

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

Знакомство со спортивным программированием

@dmitrykabanov: Хотел бы поговорить с вами о том, как вы пришли к спортивному программированию. Какие увидели для себя перспективы в этой области? Совпали ли ваши ожидания в начале пути с прогрессом в настоящий момент?

@MikeMirzayanov: Если грубо говорить, то да. Все отлично совпало. Я такой человек — склонен делать то, что нравится. В школе мне было интересно на уроках математики, информатики и программирования, но олимпиады позволяли еще и себе самому доказать, что ты можешь что-то решать и соревноваться с одноклассниками. Плюс — в этом была здоровая любознательность, хотелось больше понимать, как и что устроено. Этот процесс непрерывно продолжался. Постепенно появлялись знакомства с людьми, которые лучше ориентировались. С них можно было брать пример. Такие знакомые были и в школьные годы, и в Cаратовском университете их много — есть те, с кем я все еще общаюсь, дружу и сотрудничаю. Это очень интересные люди.

Однако помимо того что мне просто нравилось заниматься этой темой, я увидел практическую пользу. Незаметно для себя научился программировать, потом освоил не только задачки, но и «промышленный код», где, безусловно, пригодился и опыт спортивного программирования. Техника, работа без ошибок — все это помогает, а понимание специфики и в какой-то степени недооцененности спортивного программирования обществом — мотивирует меня и сегодня.

Дмитрий: Какой вы видите потенциал с точки зрения недооцененности этой темы?

Михаил: Просто сама идея competitive programming и «автоматизированного» обучения с помощью задач еще не так развита, как хотелось бы. Такой подход можно внедрять чаще. Он годится и для классических учебных процессов. Конечно, сейчас и мы в Codeforces знакомим достаточно большое количество людей с этой темой. Однако профессионализм в какой-то степени угас. Раньше соревнования были одним из немногих социальных лифтов: позавчера ты еще был школьником из заводского района непонятного города, а потом начинал заниматься и через несколько лет попадал в топовые компании к лучшим работодателям мира. Сейчас количество таких лифтов увеличилось — появились стажировки и хакатоны, но фокус оказался несколько размыт. Но это жизнь, и хорошо, что сейчас у людей есть множество альтернатив.

Зачем понадобился такой проект как Codeforces

Дмитрий: Как внедрялись в процесс подготовки и проведения соревнований такие системы и ресурсы как Codeforces? Как вы поняли, что нужно делать такой продукт?

Михаил: Понял я это, когда закончил участвовать в ICPC и открыл для себя Topcoder еще в 2003–2004 году. По мере накопления опыта в ИТ я замечал, что какие-то вещи на подобных площадках можно было бы улучшить. Мое видение процесса часто не совпадало с тем, как все это было реализовано у других. Плюс — у Topcoder не было ряда «пластов» программирования, не было все это развито в формате экосистемы. В 2007-м году я решил заняться таким проектом, когда почувствовал, что мое видение того, что можно сделать, было достаточно целостным.

Дмитрий: Какие возможности она предлагала на старте? Что есть сейчас?

Михаил: Codeforces была запущена с достаточной функциональностью — сразу была возможность что-то комментировать, отвечать, ставить плюсы и минусы. Тогда не было соцсети для интересующихся программированием, да и сейчас сильных конкурентов нет.

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

Постепенно появлялась поддержка всевозможных форматов соревнований по программированию. Сейчас есть большое количество кружков, проводятся учебные занятия и официальные соревнования. Есть интеграция с системой Polygon, где авторы готовят задачи.

Ход развития сферы спортивного программирования

Дмитрий: За десять с лишним лет пристального внимания к этой индустрии вы точно можете оценить прогресс по количеству соревнований в России и количеству участников, которые выезжают на зарубежные мероприятия от нашей страны.

Михаил: Все-таки то, что я сейчас скажу, будет моим внутренним ощущением. Оно может сильно отличаться от статистики. За десять лет «оффлайновых» соревнований стало больше, но рост этого направления уже позади. Был такой период, когда крупнейшие компании вкладывались в поддержку ряда состязаний, проводили свои мероприятия. Сейчас взгляд на этот формат эволюционирует, но количество участников от России — остается в общем тренде. В контексте десяти лет с точки зрения их численности произошел заметный рывок. Однако последние пять лет прошли гораздо спокойнее и без качественных изменений.

Дмитрий: Если смотреть с точки зрения сложности входа в эту сферу новичков, которые только-только подступаются к теме, появилось ли больше соревнований начального уровня? Или ступеней, которые позволяют плавнее подтягиваться к уровню топовых состязаний?

Михаил: Да, сейчас на это делают чуть больший акцент. Поэтому и количество людей, которые, так или иначе, знакомятся со спортивным программированием, выросло. В линейке ICPC появились дополнительные квалификационные этапы, рассчитанные на начальный уровень подготовки. Их проводят перед четвертьфиналами, чтобы увеличивать охват аудитории и демонстрировать задачи тем ребятам, которые по разным причинам не принимают участие в дальнейших этапах. На Codeforces мы несколько лет проводим соревнования третьего дивизиона, которые традиционно пользуются большой популярностью. Тут задачи достаточно доступные, и регистрируется существенное количество участников.

Личный опыт и работа с учениками

Дмитрий: Как вы присоединились к сообществу ICPC? Каким был путь от участника соревнований до роли организатора?

Михаил: Когда я поступил в Саратовский университет, у нас были регулярные тренировки. Присоединился к ним с большим удовольствием на первом курсе и стал вникать. Мне сложно все это давалось — динамическое программирование, графы — не могу сказать, что сразу получалось и было легко. Но терпение и труд позволили дважды поучаствовать в финалах чемпионата мира. Потом стал помогать проводить соревнования, готовить участников. Еще получилось так, что Наталья Львовна Андреева, которая вложила душу в развитие этого направления в Саратовском университете, ушла из жизни. Не хотелось, чтобы ее усилия пропадали — было сделано очень много к тому моменту. Но и мой интерес к этой деятельности не менялся со временем. На первом курсе я участвовал в работе жюри школьных олимпиад, преподавал, вел кружки, потом уже участвовал в подготовке и проведении соревнований.

Сейчас я заинтересован в том, чтобы на платформе Codeforces все двигалось вперед, а в ICPC я вовлечен по двум направлениям. С одной стороны, я являюсь председателем жюри четвертьфинала в Саратовском университете, занимаюсь там организационными вопросами, участвую в жюри полуфинала и четвертьфинала в Санкт-Петербурге. С другой, постепенно обсуждаю возможное сотрудничество Codeforces и ICPC. Кстати, здесь еще есть место для развития сообщества «выпускников» и участников соревнований.

Дмитрий: Ваш пример прекрасно иллюстрирует то, как сообщество обеспечивает себя инструментами и сервисами для развития.

Михаил: В российском сообществе идея alumni пока не совсем работает. Мне кажется, что помощь и участие в жизни сообщества могли бы быть шире среди тех, кто прошел через это все. Для безусловного большинства речь идет о теплых воспоминаниях и благодарном отношении — все очень позитивно оценивают роль ICPC в своей студенческой жизни.

Коротко об устройстве проекта

Дмитрий: Можете ли вы рассказать о технологическом стеке Codeforces? Хотя бы в двух словах.

Михаил: Больше всего я пишу на Java. Люблю этот язык и экосистему. Но когда я только начинал разработку, я долгое время писал код на PHP — быстро видел изменения, а цикл разработки выходил коротким. Так, обладая хорошей техникой программирования, можно было создать объемную функциональность за небольшой промежуток времени. На тот момент в экосистеме Java не было чего-то похожего, что раздражало. Для меня этот факт стал интересным технологическим вызовом, и я начал с того, что разработал свой веб-фреймворк для Java. Его киллер-фичей стала возможность перезагружать классы на лету, чтобы не нужно было «редеплоить» приложение — изменения отображались по нажатию горячей клавиши.

Похожую функциональность предлагает Java HotSwap, но с большим количеством ограничений. Есть и другие технологии — не я первый, не я последний кто занимался этим вопросом. Мне было интересно развиться в этом направлении и посмотреть, как все работает. Мы до сих пор используем мою небольшую наработку. Также переиспользуем другие библиотеки.

Мне кажется, что эволюция Codeforces — понятный процесс, с которым сталкивались более крупные игроки и системы. Сперва код пишут исходя из наивных предположений о нагрузке, потом пользовательская база увеличивается — приходится подумать о кешировании, переписывать отдельные компоненты. В какой-то момент мы написали предметно-ориентированную базу. Она индексирует и хранит в памяти много данных.

За десять лет было написано большое количество кода — значительная его часть имеет отношение к экосистеме Java. Но есть и другие вещи, например, песочница, где запускаются пользовательские программы. Для нее важно понимать, как с процессами под Windows правильно работать — чтобы все хорошо тестировалось и было довольно безопасно.

Дмитрий: Какие ли у вашего проекта ограничения, которые вы бы хотели снять и доработать?

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

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

Как часто проходят соревнования

Дмитрий: Каждое мероприятие требует существенных временных затрат на подготовку. В связи с этим как часто проходят соревнования на вашей площадке?

Михаил: В месяц проходит от восьми до одиннадцати. Сюда входят соревнования, которые мы называем Div.1 + Div.2 раундами — открытые двухчасовые эвенты, где состязаются как опытные, так и начинающие участники. Есть соревнования Div.2 Only с задачами средней сложности, а есть образовательные раунды, которые мы организуем совместно с университетом Harbour.Space.

Есть раунды третьего дивизиона для начинающих, но там тоже нужно уметь решать задачи. Суммарно получается примерно десять раундов в месяц и каждые три дня что-то проходит. Подготовку задач третьего дивизиона сложно сравнивать с «хардовыми» задачами для чемпионов. Но если оценивать грубо, то для проведения раунда нужны десятки человеко-часов.

Дмитрий: Команда, обслуживающая конкретное мероприятие, это люди из комьюнити или сотрудники и участники проекта?

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

Дмитрий: Насколько накладны непрофильные задачи вроде маркетингового продвижения, или они решаются силами комьюнити?

Михаил: Какой-то «правильный» маркетинг у нас отсутствует. Мне кажется, что сарафанное радио и качественный продукт здесь важнее. Разумеется, мы публикуем анонсы в соцсетях и делаем рассылки, но усилий для рекламы мы не прикладываем — люди и так приходят.

Дмитрий: Расскажите о планах, которые вы перед собой ставите на ближайшие годы.

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

Дмитрий: Образовательный контент — это контент для подготовки к соревнованиям?

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

Дмитрий: Можно ли говорить об этом как об одной из главных проблем в сфере спортивного программирования?

Михаил: Какой-то проблемы здесь нет. Есть сильные учебные наработки — например, сайт e-maxx.ru, который запустил мой бывший студент. Там собраны лекционные материалы на широкий спектр тем. Если участник хочет разобраться в каком-то вопросе, то он найдет возможность.

Что сейчас интересует компании

Дмитрий: Как вы можете оценить интерес к спортивному программированию со стороны компаний? Во что они сейчас вкладываются?

Михаил: Много топовых участников соревнований уходят работать в крупные компании вроде Google и Yandex и показывают там хороший карьерный рост. Кандидат с опытом в спортивном программировании имеет приоритет при приеме на работу — это правда. Компании хотят, чтобы кандидаты понимали фундаментальные основы — как работают программы, как устроены алгоритмы. Конкретный технологический стек в компаниях свой, он динамичный. Редко кто требует от человека разбираться в стеке, который сегодня есть, а завтра изменится.

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

Кстати, интервью в Google в большей степени (чем в других организациях) напоминают соревнования по программированию. Так, участники и победители олимпиад имеют большие шансы на успех. Если интервью проходят не олимпиадники, то это совсем талантливые и яркие люди. Нормально, что в будущем они показывают лучшие результаты. В то же время не совсем понятно, кого именно следует считать олимпиадниками. Если человек два раза проходил на городские соревнования и полгода ходил в кружок — есть ли у него олимпиадный опыт?

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

Нужно ли строить карьеру в этой области

Дмитрий: Существует ли тренд среди спортивных программистов на продолжение карьеры исключительно в этой сфере?

Михаил: Скорее нет, люди вовлекаются в это движение в школьные и студенческие годы. На старших курсах интерес по той или иной причине угасает — это нормально и естественно. Далее, человек заканчивает университет, перед ним открывается новая рабочая жизнь, и он находит себя в индустрии. Я отношусь к спортивному программированию как к физкультуре. Думаю, никто не будет спорить, что она положительно влияет на здоровье. Участие в соревнованиях по программированию — это физкультура для мозга, тренировка в понимании алгоритмов. Людей, которые хотят заниматься исключительно этим мало, и больше их не становится.

Дмитрий: Должны ли они появляться, или в этом нет смысла?

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *