Заключительный тур X Вологодской областной олимпиады по информатике на приз Губернатора 2025, 9-10 классы
1. Гири
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Даны $$$4 \cdot k$$$ гирь массами 1 грамм, 2 грамма, ..., $$$4 \cdot k$$$ грамм. Их разделили на две равные по количеству и массе части. Удалите из каждой группы по две гири так, чтобы массы групп остались равными.

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

В первой строке входных данных записано целое число $$$k$$$ ($$$1 \le k \le 50000$$$). Во второй строке через пробел записаны $$$2 \cdot k$$$ целых чисел — массы гирь первой группы, в третьей строке записаны $$$2 \cdot k$$$ целых чисел — массы гирь второй группы. Суммы чисел в группах совпадают. Каждое число от 1 до $$$4 \cdot k$$$ встречается ровно один раз.

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

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

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

Подзадача 1 (до 40 баллов): $$$k \le 20$$$

Подзадача 2 (до 28 баллов): $$$k \le 200$$$

Подзадача 3 (до 32 баллов): $$$k \le 50000$$$

Пример
Входные данные
2
2 5 3 8
7 1 6 4
Выходные данные
3 2 4 1
Примечание

Примечание для пишущих на языке Python: ввести набор чисел, записанных через пробел, можно так:

a = [int(x) for x in input().split()]

2. И снова гири
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Составляя тесты к предыдущей задаче, жюри задумалось над вопросом: а сколько различных тестов для заданного $$$k$$$ можно придумать? Жюри считает два теста различными, если один из них нельзя получить из другого обменом групп местами и/или перестановкой чисел в группах. Напишите программу для поиска ответа на этот вопрос.

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

Вводится одно целое число $$$k$$$ ($$$1 \le k \le 16$$$).

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

Выведите одно целое число — количество способов разбить первые $$$4 \cdot k$$$ натуральных чисел на две группы по $$$2 \cdot k$$$ чисел в каждой так, чтобы суммы чисел в группах были одинаковы.

Пример
Входные данные
2
Выходные данные
4
Примечание

В примере для $$$k=2$$$ можно получить 4 различных способа разбиения:

  • 1 2 7 8 и 3 4 5 6
  • 1 3 6 8 и 2 4 5 7
  • 1 4 5 8 и 2 3 6 7
  • 1 4 6 7 и 2 3 5 8

Система оценивания. Решения, верно работающие для $$$k \le 6$$$, будут оценены в 50 баллов.

Обратите внимание: ответ может не помещаться в 32-битный целый тип, рекомендуется использовать 64-битный тип (long long в языке C++, long в Java и C#, int64 в Pascal). В Python ничего дополнительно делать не требуется.

3. Первое число
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Вася написал на листке $$$n$$$ подряд идущих положительных целых чисел. При этом всего оказалось выписано $$$k$$$ цифр. Какое число Вася написал первым?

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

Вводятся два целых числа $$$n$$$ и $$$k$$$, каждое в отдельной строке ($$$1 \le n \le 10^{17}$$$, $$$1 \le k \le min (18 \cdot n, 10^{18}))$$$.

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

Выведите число, которое было написано первым. Если есть несколько верных ответов, выведите наименьший. Если решений нет, выведите -1.

Примеры
Входные данные
9
10
Выходные данные
2
Входные данные
2
1
Выходные данные
-1
Примечание

Система оценивания.

Подзадача 1 (до 28 баллов): $$$n \le 100$$$, $$$k \le min(3 \cdot n, 10^3)$$$.

Подзадача 2 (до 36 баллов): $$$n \le 10^6$$$, $$$k \le min(7 \cdot n, 10^7)$$$.

Подзадача 3 (до 36 баллов): $$$n \le 10^{17}$$$, $$$k \le min (18 \cdot n, 10^{18})$$$.

Обратите внимание: входные данные и ответ в третьей подзадаче могут не помещаться в 32-битный целый тип, рекомендуется использовать 64-битный тип (long long в языке C++, long в Java и C#, int64 в Pascal). В Python ничего дополнительно делать не требуется.

4. Поиск с ошибкой
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Напишите программу для поиска подстроки в строке. Дополнительное условие: разрешена одна ошибка, то есть одна пара символов может не совпадать.

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

В первой строке входных данных записана строка $$$s$$$, в которой ищем. Во второй строке записана подстрока $$$q$$$, которую ищем. Строки содержат только строчные латинские буквы, а их длины не превышают $$$2 \cdot 10^5$$$ символов.

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

Выведите одно целое число — позицию вхождения подстроки $$$q$$$ в строку $$$s$$$ (позиции нумеруются с единицы). Если есть несколько верных ответов, то выведите наименьший из них. Если нет ни одного вхождения, то выведите 0.

Пример
Входные данные
abacabadaba
bad
Выходные данные
2
Примечание

Решения, работающие для строк длиной до 1000 символов, могут получить до 40 баллов.

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

Дан лабиринт размером $$$N \times M$$$ клеток. В верхнем левом углу лабиринта находится квадрат со стороной $$$P$$$ клеток. За один шаг квадрат может перемещаться на одну клетку вверх, вниз, вправо или влево, если при этом он не столкнется с занятыми клетками. Необходимо найти наименьшую возможную длину пути, по которой квадрат может добраться до нижнего правого угла.

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

В первой строке вводятся три числа $$$N$$$, $$$M$$$, $$$P$$$. Далее идет $$$N$$$ строк по $$$M$$$ символов, обозначающих клетки лабиринта: '.', если клетка свободна, 'X', если занята. Гарантируется, что верхний левый и нижний правый квадраты $$$P \times P$$$ не содержат занятых клеток.

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

Выведите наименьшую возможную длину пути, или $$$-1$$$, если такого пути не существует.

Примеры
Входные данные
5 5 2
...XX
....X
X...X
XX...
XX...
Выходные данные
6
Входные данные
5 5 2
...XX
...XX
XX.XX
XX...
XX...
Выходные данные
-1
Примечание

Подзадача 1 (до 20 баллов): $$$1 \leq N,M \leq 10$$$, $$$P = 1$$$

Подзадача 2 (до 20 баллов): $$$1 \leq N,M \leq 2000$$$, $$$P = 1$$$

Подзадача 3 (до 20 баллов): $$$1 \leq N,M \leq 50$$$, $$$P = 2$$$

Подзадача 4 (до 20 баллов): $$$1 \leq N,M \leq 2000$$$, $$$1 \leq P \leq min(50,N,M)$$$

Подзадача 5 (до 20 баллов): $$$1 \leq N,M \leq 2000$$$, $$$1 \leq P \leq min(N,M)$$$