Индивидуальная олимпиада школьников по информатике и программированию 2020
A. Йода и приставки Си
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Магистр Йода известен тем, что использует необычный порядок слов. Эта особенность имеет еще одно следствие. Когда магистр называет какое-то расстояние, площадь или объем, он использует множество приставок системы Си. Каждая приставка системы Си умножает единицу измерения на некоторую степень десяти. Например, он может сказать «megananokilogigamicrometer», что будет соответствовать $$$10^3$$$ метрам. Если речь идет об объёме, то он может сказать «millimeter$$$^3$$$», что будет соответствовать $$$10^{-9}$$$ метрам кубическим.

Магистр использует только следующие приставки:

ПриставкаСтепень десяти
tera12
giga9
mega6
kilo3
deci-1
centi-2
milli-3
micro-6
nano-9

Например, если Йода сказал «megananokilogigamicrometer», то это равно $$$10^6 \cdot 10^{-9} \cdot 10^3 \cdot 10^9 \cdot 10^{-6}$$$ метрам или $$$10^3$$$ метрам. Правила применения приставок к квадратным и кубическим величинам также являются стандартными. Например, один кубический метр равен $$$10^6$$$ кубическим сантиметрам.

К сожалению, C-3PO рядом не оказалось, и вам нужно самостоятельно расшифровать, что именно сказал Йода. Переведите единицу измерения, которую назвал Йода, в метры, метры квадратные или метры кубические, в зависимости от разрядности исходной единицы измерения. Несложно показать, что у вас получится величина, равная $$$10^x$$$ (метров, метров квадратных или метров кубических), где $$$x$$$ — целое число. Выведите $$$x$$$.

Входные данные

Входные данные содержат единственную строку — слово, сказанное магистром Йодой. Длина слова не превосходит $$$10^5$$$. Гарантируется, что слово было получено последовательным приписыванием нескольких приставок из таблицы к «meter», «meter$$$^2$$$» или «meter$$$^3$$$».

Выходные данные

Выведите целое число $$$x$$$, такое что если перевести единицу измерения, названную магистром Йодой, в метры, метры квадратные или метры кубические, получится $$$10^x$$$.

Система оценки

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

ПодзадачаБаллыОграничения Необходимые подзадачи Информация о проверке
133Слово содержит не более одной приставкиполная
233Слово заканчивается на meterпервая ошибка
334Без дополнительных ограничений1, 2первая ошибка
Примеры
Входные данные
meter
Выходные данные
0
Входные данные
kilometer
Выходные данные
3
Входные данные
megananokilogigamicrometer
Выходные данные
3
Входные данные
millimeter^3
Выходные данные
-9
Примечание

В первом примере, один метр равен $$$10^0$$$ метрам.

Во втором примере, один километр равен $$$10^3$$$ метрам.

В четвертом примере, один кубический миллиметр равен $$$10^{-9}$$$ кубическим метрам.

B. Джедайские вычисления
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

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

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

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

Входные данные

В единственной строке дана строка $$$s$$$, состоящая из цифр и символов «+» и «-» ($$$2 \le |s| \le 100\,000$$$). Эта строка является корректным арифметическим выражением, не содержащим унарных знаков «+» и «-». Иными словами, символы «+» и «-» всегда разделяют два числа. Все числа в выражении имеют длину от $$$2$$$ до $$$9$$$ включительно и не содержат ведущих нулей.

Выходные данные

Выведите единственное число — максимальное значение выражения, которое может получиться, если в исходном выражении удалить ровно один символ.

Система оценки

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

|c|c|}

Подзадача

БаллыОграничения Необходимые подзадачи Информация о проверке
117$$$s$$$ не содержит символов + и -первая ошибка
219Длины всех чисел равны $$$2$$$, $$$|s| \le 300$$$первая ошибка
321$$$s$$$ не содержит символов -1первая ошибка
421$$$|s| \le 1\,000$$$2первая ошибка
522Без дополнительных ограничений1, 2, 3первая ошибка
Примеры
Входные данные
123+45+67
Выходные данные
12412
Входные данные
10-20-30
Выходные данные
990
Примечание

В первом примере максимальное значение выражения получится, если удалить первый знак «+». Тогда выражение будет равно $$$12345 + 67 = 12412$$$.

Во втором примере максимальное значение выражения получится, если удалить первый знак «-». Тогда выражение будет равно $$$1020 - 30 = 990$$$.

C. Древний замок
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Кэл Кестис обнаружил древний храм Силы. Вход в храм находится в прямоугольной пещере. Чтобы попасть в храм, нужно открыть рунический замок, которым запечатан вход.

Пещера, в которой находится вход в храм, имеет размеры $$$n \times m$$$ метров, и поделена на квадраты размера $$$1 \times 1$$$ метр. Представим пещеру в виде таблицы $$$n \times m$$$, строки которой пронумерованы от $$$1$$$ до $$$n$$$ сверху вниз, а столбцы — от $$$1$$$ до $$$m$$$ слева направо. В некоторых квадратах находятся рунические камни, а остальные квадраты свободны. Кэл может перемещаться только по свободным квадратам. За единицу времени он может переместиться из квадрата в соседний по стороне.

Сейчас Кэл находится в некотором квадрате пещеры. Чтобы открыть вход в храм, нужно в правильном порядке коснуться нескольких рунических камней. После чего, Кэл должен дойти до квадрата, в котором откроется вход в храм. Чтобы коснуться рунического камня, расположенного в некотором квадрате, Кэл должен встать в квадрате, соседнем по стороне. На то, чтобы коснуться камня, Кэл не тратит дополнительного времени.

За Кэлом гонятся инквизиторы Империи, и он хочет узнать, за какое минимальное время можно открыть замок и войти в храм. Помогите ему узнать эту величину.

Входные данные

В первой строке даны три целых числа $$$n$$$, $$$m$$$ и $$$k$$$ — размеры пещеры и длина последовательности камней, до которых Кэл должен дотронуться ($$$1 \le n, m \le 100$$$; $$$0 \le k \le 100$$$).

В следующих $$$n$$$ строках дано по $$$m$$$ символов — описание пещеры. Символ «#» соответствует непроходимой клетке, содержащей камень. Все остальные клетки свободны. Символ «S» соответствует квадрату, в котором Кэл находится изначально. А символ «F» соответствует квадрату, в котором откроется вход в храм. Кэл должен будет прийти в него после того, как откроет замок. Все остальные символы равны «.». Гарантируется, что символы «S» и «F» встречаются ровно по одному разу.

В следующих $$$k$$$ строках даны по два целых числа $$$x_i$$$ и $$$y_i$$$ — номер строки и столбца, на пересечении которых находится $$$i$$$-й камень, которого Кэл должен коснуться. Гарантируется, что квадрат на пересечении строки номер $$$x_i$$$ и столбца номер $$$y_i$$$ содержит камень для всех $$$i$$$ от $$$1$$$ до $$$k$$$.

Выходные данные

Если Кэл не сможет открыть замок и войти в храм, выведите число $$$-1$$$. Иначе, выведите минимальное время, необходимое, чтобы открыть замок и дойти до входа в храм.

Система оценки

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

ПодзадачаБаллыОграничения Необходимые подзадачи Информация о проверке
111$$$k = 0$$$первая ошибка
234$$$k \le 5$$$1первая ошибка
3551, 2первая ошибка
Примеры
Входные данные
3 5 3
#....
####.
FS...
1 1
2 3
2 2
Выходные данные
17
Входные данные
3 5 1
#....
#####
FS...
1 1
Выходные данные
-1
Входные данные
3 5 0
F#...
.#.#.
...#S
Выходные данные
10
Примечание

В первом примере, Кэл сначала должен дойти до квадрата $$$(1, 2)$$$ за $$$8$$$ шагов. Коснуться камня $$$(1, 1)$$$. Перейти в соседний справа квадрат. Коснуться камня $$$(2, 3)$$$. Затем, дойти до квадрата $$$(3, 2)$$$ за $$$7$$$ шагов. Коснуться камня $$$(2, 2)$$$. Перейти в соседний слева квадрат. После чего, его маршрут закончится. Суммарно он потратит $$$8 + 1 + 7 + 1 = 17$$$ единиц времени.

D. Кроссворд для дроида
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

R2-D2 решает кроссворд, составленный специально для дроидов. В этом кроссворде в клеточки нужно писать не буквы, а цифры.

Кроссворд представляет из себя клетчатое поле $$$n \times m$$$. Некоторые клетки заблокированы, а все остальные — свободные. Словом в кроссворде назовем максимальный по включению вертикальный или горизонтальный отрезок свободных клеток. Иными словами, слово — это отрезок клеток одного столбца или строки, ограниченный с обоих сторон краем поля или заблокированными клетками.

Исходно, каждая свободная клетка кроссворда содержит какую-то цифру. Цель дроида — поменять цифры таким образом, чтобы каждое слово в кроссворде являлось палиндромом. Палиндром — это строка, читающаяся одинаково как слева-направо так и справа-налево. При этом, чем меньше суммарное изменение цифр в кроссворде по сравнению с исходными, тем лучше. Поэтому, требуется найти такое решение кроссворда, при котором сумма по всем свободным клеткам модулей разности исходной цифры и цифры в решении, была минимальна.

Помогите R2-D2 решить кроссворд так, чтобы суммарное изменение цифр было минимально. Несложно заметить, что всегда есть способ заполнить кроссворд так, чтобы все слова были палиндромами. Например, заполнить все свободные клетки одинаковыми цифрами. Поэтому, решение всегда существует.

Входные данные

В первой строке дано два целых числа $$$n$$$ и $$$m$$$ — размеры поля ($$$1 \le n, m \le 1\,000$$$).

В следующих $$$n$$$ строках дано по $$$m$$$ символов — описание кроссворда. Символы могут быть равны «.» или цифрам. Символ «.» соответствует заблокированной клетке. А символ с цифрой $$$d$$$ соответствует свободной клетке, в которой исходно написана цифра $$$d$$$.

Выходные данные

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

Система оценки

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

ПодзадачаБаллыОграничения Необходимые подзадачи Информация о проверке
17$$$n, m \le 4$$$первая ошибка
26$$$n = 1$$$первая ошибка
334$$$n, m \le 100$$$1первая ошибка
427$$$n, m \le 300$$$1, 3первая ошибка
526Без дополнительных ограничений1, 2, 3, 4первая ошибка
Примеры
Входные данные
3 3
123
456
789
Выходные данные
323
454
323
Входные данные
4 3
.2.
.05
.2.
10.
Выходные данные
.1.
.22
.2.
11.
Входные данные
10 10
.538......
...4...4..
...459157.
5...6..6..
7.16304815
9...6..1..
5...8..2..
138631.351
2...3...7.
7.......4.
Выходные данные
.535......
...4...3..
...531135.
5...3..1..
2.11800811
1...6..1..
5...8..3..
136631.343
2...3...7.
5.......4.
Примечание

В первом примере в кроссворде есть $$$6$$$ слов, соответствующих каждому столбцу и строке поля. В оптимальном решении, суммарное изменение цифр равно $$$20$$$.

Во втором примере, помимо слов длины $$$1$$$, есть следующие слова: 2020, 05, 10. В оптимальном решении, суммарное изменение цифр равно $$$7$$$.

E. Боевые дроиды
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Граф Дуку хочет отправить отряд дроидов на важное задание. Перед ним стоит шеренга из $$$n$$$ дроидов, пронумерованных от $$$1$$$ до $$$n$$$ слева направо. Граф решил выбрать в качестве отряда подотрезок этой шеренги. То есть, всех дроидов с номерами от $$$l$$$ до $$$r$$$ для некоторых $$$l$$$ и $$$r$$$ ($$$1 \le l \le r \le n$$$). Каждый дроид характеризуется своим AIQ — коэффициентом искусственного интеллекта. AIQ дроида номер $$$i$$$ равен $$$a_i$$$.

Дроиды, находящиеся в одном отряде, могут объединяться в более продвинутых дроидов. Если в отряде есть два дроида с одинаковым AIQ, равным $$$x$$$, они могут объединиться в одного дроида с AIQ равным $$$x + 1$$$.

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

Входные данные

В первой строке дано одно целое число $$$n$$$ — количество дроидов в шеренге ($$$1 \le n \le 200\,000$$$).

Во второй строке даны $$$n$$$ целых чисел $$$a_i$$$ — коэффициенты искусственного интеллекта роботов ($$$1 \le a_i \le 10^9$$$).

Выходные данные

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

Система оценки

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

ПодзадачаБаллыОграничения Необходимые подзадачи Информация о проверке
15$$$n \le 100$$$первая ошибка
29$$$n \le 1\,000$$$1первая ошибка
36$$$n \le 5\,000$$$, $$$a_i \le 2$$$первая ошибка
410$$$n \le 5\,000$$$, $$$a_i \le 30$$$3первая ошибка
511$$$n \le 5\,000$$$1 – 4первая ошибка
68$$$n \le 50\,000$$$, $$$a_i \le 2$$$3первая ошибка
717$$$n \le 50\,000$$$, $$$a_i \le 30$$$3, 4, 6первая ошибка
819$$$n \le 50\,000$$$1 – 7первая ошибка
915$$$n \le 200\,000$$$1 – 8первая ошибка
Примеры
Входные данные
3
1 1 2
Выходные данные
5
Входные данные
7
3 4 3 5 3 4 3
Выходные данные
13
Примечание

В первом примере помимо трёх подходящих отрезков длины $$$1$$$, подходят отрезки $$$[1, 1]$$$ и $$$[1, 1, 2]$$$.

Во втором примере помимо семи подходящих отрезков длины $$$1$$$, подходят все четыре отрезка длины $$$4$$$, а также два отрезка $$$[3, 4, 3]$$$.