Олимпийский код
Ранним августовским утром 1982 года я с фанерным чемоданчиком ждал на остановке у аэропорта Толмачево редкий автобус, отходящий в новосибирский Академгородок. Это была завершающая часть моего почти недельного приключения – путешествия из арктического чукотского городка Певек: я преодолевал это немалое расстояние на самолетах Ил-14 и новеньком Ту-154, с ночевкой на полу магаданского аэропорта. Сотовых не было, и в местах своих остановок я давал маме краткие телеграммы: «Порядок», так как платить надо было за каждое слово. Я был не один: из разных отдаленных уголков страны в Академгородок слетались в Летнюю школу победители многочисленных областных и республиканских школьных олимпиад, чтобы пройти последний и самый важный этап – зачисление в физико-математическую школу-интернат. Олимпиадники, которые жили в европейской части СССР, летели в Москву в не менее легендарный интернат СУНЦ при Московском университете. Система, запущенная в СССР в 1930-е годы, работала безотказно, поставляя стране научные кадры мирового уровня. И, что невероятно, работает до сих пор – достаточно проверить количество золотых медалей, которые привозят наши школьники и студенты с мировых чемпионатов и олимпиад.
История
«Олимпиады для учащейся молодежи» еще в XIX веке проводило Астрономическое общество Российской империи. Первый очный математический конкурс для выпускников лицеев состоялся в Румынии в 1886 году, а первая математическая олимпиада прошла в Венгрии по инициативе Венгерского физико-математического общества в 1894-м, что на два года раньше первых современных Олимпийских игр в Афинах.
В СССР первая математическая олимпиада состоялась в Ленинграде в 1934-м, а в следующем году уже и в Москве. Физические и химические стартовали в 1938-м. А уже к 1967 году была выстроена четкая система Всесоюзных олимпиад школьников по физике, математике и химии, дающих равные шансы талантливым детям из самых отдаленных уголков страны, – я сам яркий пример этой системы.
Школьные олимпийцы
Мы сидим в офисе Алексея Малеева, проректора по международным программам и цифровым инновациям легендарного МФТИ, обсуждая одно из самых крутых событий лета – финал чемпионата мира по программированию среди студентов ICPC в Москве и вообще олимпиадное школьное и студенческое движение в мире. Первая Всесоюзная олимпиада по информатике прошла в 1988 году в Свердловске. Почему именно там? На тот момент свердловские и областные школы получили персональные компьютеры «Роботрон-1715», а также была разработана программа преподавания информатики. Сейчас компьютеры есть почти везде, и олимпиадное движение в этой области поставлено на поток. Хороший поток.
Школьные олимпиады по информатике похожи на физико-математические с той разницей, что решаются другие задачи – по программированию. Требуется написать компилируемый код и отправить его в автоматическую тестирующую систему, которая сильно облегчает работу жюри. Традиционная задача – придумать алгоритм, написать программу, сгенерировать код, загрузить входные данные и получить на выходе результат, который сравнивается с правильными ответами. Все делается в автоматическом режиме, поэтому какие-то манипуляции и подтасовки практически исключены. Что измеряется, помимо правильности результатов? Время выполнения алгоритма, то есть время работы программы. Стандартное ограничение – несколько секунд, ведь современные компьютеры очень мощные, и за несколько секунд можно много чего сделать. Но если алгоритм примитивный, например, простой перебор, то при больших входных данных программа в нужное время не уложится. Поэтому алгоритм должен быть достаточно эффективным. Также бывают ограничения на использование оперативной памяти.
Код исполняется на общем сервере: туда отправляется текстовый файл, там заново компилируется и выполняется. В процессе решения задачи участники могут проверять работу алгоритмов на том же сервере, компилировать там программы и прогонять их с тестовыми данными. Как правило, в каждом условии есть один или два примера, какого формата будут входящие данные и какого – выходные, с правильными ответами. Вот на них и тестируют.
Сейчас Всероссийская олимпиада для школьников, преемница Всесоюзной, проходит в четыре этапа. Первый этап – в каждой школе страны. Второй – муниципальный, или районный, третий – региональный, в каждом регионе РФ, и только лучших приглашают на заключительный, четвертый этап. Каждый раз он проходит в новом месте. В этом году Москва будет принимать заключительный этап Всероссийской олимпиады школьников по информатике – МФТИ и фирма «1С», базовая кафедра МФТИ. В прошлом году заключительный этап прошел в Университете Иннополиса. Два года назад это был Ульяновск.