20.10.2026 Олимпиада ВСОШ по Информатике 9-11 класс г. Москва ответы и задания

20.10.2026 Олимпиада ВСОШ по Информатике 5-6 класс г. Москва ответы и заданияПоделиться:

Олимпиада ВсОШ по Информатике (Программирование) 9-11 класс по Москве

Задание 1. Доставка в Простоквашино
Ограничение по времени: 1 секунда
Ограничение по памяти: 256 мегабайт
Недавно почтальон Печкин прочитал в газете о новых роботах-доставщиках и решил использовать одного из них для развоза почты. Он планирует внедрять данную инновацию в деревне Простоквашино, которую можно представить как длинную улицу: в начале — отделение почты, за ним — жилые дома, расположенные в ряд на равном расстоянии друг от друга.
Чтобы проехать от отделения почты до первого дома или от одного дома до соседнего, роботу Печкина требуется a единиц энергии. Если робот имеет меньше a единиц энергии, он не сможет доехать до следующего дома. При этом предусмотрительный почтальон возле каждого дома разместил зарядную станцию, на которой уровень заряда робота может увеличиться на b единиц. Каждой зарядной станцией робот может воспользоваться только один раз.
В качестве «тестового задания» Печкин хочет доставить с помощью робота журнал «Мурзилка» дяде Фёдору, который живёт в k-м по счёту от почты доме. Теперь ему предстоит выяснить, на какое минимальное число единиц энергии ему необходимо изначально зарядить робота, чтобы тот мог доехать от почты до дома дяди Фёдора.
Входные данные
В первой строке входных данных содержится целое число a (0 ≤ a ≤ 10⁹) — количество энергии, необходимое роботу для того, чтобы проехать расстояние между двумя домами.
Во второй строке содержится целое число b (0 ≤ b ≤ 10⁹) — количество энергии, на которое робот может зарядиться у каждого дома.
В третьей строке содержится целое число k (1 ≤ k ≤ 10⁹) — номер (по счёту от здания почты) дома дяди Фёдора.
Гарантируется, что a · k ≤ 2 · 10⁹.
Выходные данные
Выведите одно число — минимальное количество единиц энергии, на которое Печкину необходимо зарядить робота.
Система оценки
Решения, правильно работающие при a, k ≤ 100, будут оцениваться в 30 баллов.
Решения, правильно работающие при k ≤ 5 · 10⁵, будут оцениваться в 75 баллов.
Решения, корректно работающие при a ≤ b, будут оцениваться в 35 баллов.
Пример 1
Ввод:
2
1
5
Вывод:
6
Пример 2
Ввод:
2
4
10
Вывод:
2
Примечание
В первом примере из условия достаточно зарядить робота на 6 единиц энергии. На дорогу до первого дома он потратит 2 единицы, и у первого дома он зарядится на 1 единицу, у него останется 5 единиц. После зарядки у второго дома останется 4 единицы энергии, у третьего — 3, у четвёртого — 2, и доставщику хватит энергии, чтобы добраться до пятого дома. Можно показать, что меньшего количества энергии роботу не хватит.

Задание 2. Места в автобусе
Ограничение по времени: 1 секунда
Ограничение по памяти: 256 мегабайт
Нумерация мест в автобусе устроена так, как показано на рисунке.
На рисунке изображены первые пять рядов мест. Если в автобусе больше пяти рядов, последующие ряды нумеруются аналогично.
Два друга купили билеты на места с номерами x и y. Они планируют играть в шахматы во время поездки и хотят определить, насколько удобно им будет играть на этих местах. Они разделили варианты расположения мест на четыре категории.
1. — друзья сидят рядом, с одной стороны от прохода. Например, места 1 и 2 или 7 и 8.
2. — друзья сидят в одном ряду, по разные стороны от прохода, оба места находятся у прохода. Например, места 2 и 4.
3. — друзья сидят в соседних рядах, с одной и той же стороны от прохода. Например, места 1 и 5 или 4 и 7.
4. — во всех остальных случаях.
Помогите определить, насколько удобно друзьям играть в шахматы.
Входные данные
В первой строке входных данных записано целое число x — номер места первого друга.
Во второй строке записано целое число y — номер места второго друга.
Числа x и y различны и удовлетворяют условиям 1 ≤ x ≤ 10⁹, 1 ≤ y ≤ 10⁹.
Выходные данные
Программа должна вывести одно целое число от 1 до 4 — категорию удобства расположения мест.
Пример 1
Ввод:
1
2
Вывод:
1
Пример 2
Ввод:
4
2
Вывод:
2

Задание 3. Три Кирилла и их рост
Ограничение по времени: 1 секунда
Ограничение по памяти: 256 мегабайт
Три Кирилла участвовали в турнире по волейболу. Чтобы различать всех Кириллов, им дали номера «первый», «второй» и «третий».
Оказалось, что первый Кирилл не выше второго, а второй — не выше третьего. Также друзья в перерыве между мероприятиями решили встать друг другу на головы и поставить блок, и таким образом выяснили, что их суммарный рост равен n.
Кириллы сообщили вам число n и просят посчитать количество различных вариантов значений их роста. Два варианта считаются различными, если у хотя бы одного Кирилла отличается рост в этих вариантах.
Иными словами, если обозначить рост первого, второго и третьего Кириллов целыми положительными числами a, b и c соответственно, необходимо найти количество троек целых положительных чисел a, b, c — таких, что a ≤ b ≤ c и a + b + c = n.
Входные данные
Программа получает на вход одно целое число n (3 ≤ n ≤ 2 × 10⁹) — сумму ростов Кириллов.
Выходные данные
Программа должна вывести одно целое число — количество возможных вариантов роста Кириллов.
Обратите внимание на то, что значение ответа в этой задаче может превышать максимальное возможное значение 32-битной целочисленной переменной, поэтому необходимо использовать 64-битные целочисленные типы данных (тип int64 в языке Pascal, тип long long в C++, тип long в Java и C#).
Система оценки
Решения, правильно работающие при n ≤ 100, будут оцениваться в 25 баллов.
Решения, правильно работающие при n ≤ 2000, будут оцениваться в 50 баллов.
Решения, правильно работающие при n ≤ 10⁶, будут оцениваться в 80 баллов.
Пример 1
Ввод:
3
Вывод:
1
Пример 2
Ввод:
7
Вывод:
4
Примечание
Во втором примере из условия подходят следующие варианты роста:
7 = 1 + 1 + 5 = 1 + 2 + 4 = 1 + 3 + 3 = 2 + 2 + 3.

Задание 4. Очередь на заправку
Ограничение по времени: 1 секунда
Ограничение по памяти: 256 мегабайт
На заправке есть две колонки: одна предназначена для машин с горловиной бензобака справа, другая — для машин с горловиной слева. Каждая машина может заправиться только на подходящей для неё колонке.
Перед заправкой образовалась очередь. i-я машина в очереди заправляется tᵢ минут, также для каждой машины известно расположение горловины бензобака. Очередь к колонкам общая, машины в очереди не могут обгонять друг друга. Поэтому следующая машина может начать заправку только после того, как предыдущая машина заедет на заправку, и только если подходящая для неё колонка свободна.
Сколько времени потребуется, чтобы заправить все машины? Изначально обе колонки свободны. Временем, необходимым для передвижения машин, следует пренебречь.
Входные данные
Первая строка входных данных содержит одно целое число n (1 ≤ n ≤ 10⁵) — количество машин.
Каждая из следующих n строк содержит одно целое число tᵢ (−10⁹ ≤ tᵢ ≤ 10⁹, tᵢ ≠ 0).
Знак числа обозначает расположение горловины бензобака (tᵢ < 0 для горловины слева, иначе справа), модуль — продолжительность заправки.
Выходные данные
Программа должна вывести одно целое число — сколько минут необходимо на заправку всех машин.
Обратите внимание на то, что значение ответа в этой задаче может превышать максимальное возможное значение 32-битной целочисленной переменной, поэтому необходимо использовать 64-битные целочисленные типы данных (тип int64 в языке Pascal, тип long long в C++, тип long в Java и C#).
Система оценки
Решения, правильно работающие при |t₁| + |t₂| + … + |tₙ| ≤ 10⁵, будут оцениваться в 30 баллов.
Решения, правильно работающие при |t₁| + |t₂| + … + |tₙ| ≤ 2 · 10⁹, будут оцениваться в 50 баллов.
Пример
Ввод:
3
-1
-2
3
Вывод:
4
Примечание
Пояснение к примеру из условия:
первая машина заезжает сразу и заправляется 1 минуту;
вторая машина ждёт 1 минуту, чтобы освободилась её колонка, затем заезжает и заправляется 2 минуты;
третья машина заезжает сразу после второй и заправляется 3 минуты.
Поскольку вторая и третья машины начинают заправку одновременно, последняя машина заканчивает заправку через 1 + 3 = 4 минуты после начала заправки первой.

Задание 5. Мост из отрезков
Ограничение по времени: 1 секунда
Ограничение по памяти: 256 мегабайт
У вас есть n фрагментов для строительства моста. Каждый фрагмент имеет единичную длину. Используя все эти фрагменты, постройте мост, соединяющий точку (0, 0) с точкой (x, y). Мост представляет собой несамопересекающуюся ломаную, состоящую из n отрезков единичной длины. Концы каждого отрезка должны иметь целочисленные координаты, а каждый отрезок должен быть параллелен одной из осей координат.
Входные данные
Первая строка входных данных содержит целое число n — количество фрагментов моста, 1 ≤ n ≤ 10⁵. В следующих двух строках содержатся целые числа x и y — координаты конца моста. Числа x и y целые, по модулю не превосходят 10⁵, при этом точка (x, y) не совпадает с началом координат.
Выходные данные
Если такой мост построить нельзя, программа должна вывести число −1.
Если такой мост построить можно, программа должна вывести n + 1 строку, в каждой строке должно быть два целых числа — координаты вершин ломаной в порядке обхода. Первая вершина должна иметь координаты (0, 0), последняя — (x, y). Две соседние вершины ломаной должны находиться на расстоянии 1. Ломаная не должна иметь самопересечений. Можно вывести любой подходящий мост.
Пример 1
Ввод:
7
2
-1
Вывод:
0 0
1 0
1 -1
1 -2
2 -2
3 -2
3 -1
2 -1
Пример 2
Ввод:
1
1000
1000
Вывод:
-1
Примечание
Мост из первого примера изображён на рисунке.


Олимпиада школьного этапа ВсОШ по Информатике (Программирование) 9-11 класса задания и ответы: город Москва, 20 октября 2026. Полный доступ к ответам и разбору всероссийской олимпиады, проходящей на площадке МЭШ — school.mos.ru.