Задание 18 ЕГЭ по информатике: наибольшая и наименьшая сумма Робота
Задание 18 ЕГЭ по информатике проверяет умение обрабатывать целочисленные данные в электронных таблицах: Робот идёт по клеткам квадрата вправо и вниз, собирает монеты, и нужно найти наибольшую и наименьшую возможную сумму. Решают его в редакторе электронных таблиц: рядом с полем строят таблицу накопленных сумм, где каждая клетка считается формулой из соседей слева и сверху.
- Что проверяет: Умение использовать электронные таблицы для обработки целочисленных данных. В демоверсии 2027 года Робот может закончить путь в любой клетке, закрытой стенами справа и снизу, а в ответ записывают наибольшую и наименьшую итоговые суммы.
- Баллы: 1 первичный балл
- Формат ответа: Два целых числа через пробел: сначала максимальная сумма, затем минимальная
- Программа: задание решают без программы, ответ можно проверить на Python
- Уровень сложности: повышенный
- Время: около 8 минут по спецификации
- Кодификатор: 4.5 — табличные (реляционные) базы данных; работа с готовой базой данных; поиск, сортировка и фильтрация данных; требование 2.13 — умение использовать электронные таблицы для анализа, представления и обработки данных
Как решать
Откройте файл и скопируйте поле с числами на свободное место листа. Пусть поле занимает A1:J10, а таблица максимумов начинается с A21. В каждой её клетке будет стоять наибольшая сумма, с которой Робот может прийти в соответствующую клетку поля.
Заполните таблицу формулами. В A21 поставьте =A1. В первой строке Робот приходит только слева: в B21 формула =A21+B1, её копируют вправо. В первом столбце он приходит только сверху: в A22 формула =A21+A2, её копируют вниз. В остальных клетках =МАКС(B21;A22)+B2 для B22, и эту формулу копируют на всю оставшуюся область. Таблицу минимумов строят так же, начиная, например, с A41, с функцией МИН вместо МАКС.
Стены меняют формулы. Если слева от клетки стоит стена, Робот не может прийти слева, и в формуле остаётся только сосед сверху: для клетки C2 со стеной между B2 и C2 вместо =МАКС(C21;B22)+C2 пишут =C21+C2. Если стена над клеткой, остаётся только сосед слева. Проверьте все клетки, соседние со стенами, и поправьте формулы вручную в обеих таблицах.
В демоверсии 2027 года Робот может остановиться в любой клетке, которая справа и снизу закрыта стенами, внешними или внутренними; правая нижняя клетка — одна из них. Найдите все такие клетки, возьмите наибольшее значение в таблице максимумов и наименьшее значение в таблице минимумов.
Для проверки поле можно переписать в Python списком строк, а стены — множествами клеток, из которых нельзя пройти вправо или вниз. Программа заполняет таблицы тем же правилом, что и формулы.
Примеры с решением
Пример 1
Квадрат разлинован на 5 × 5 клеток. Исполнитель Робот перемещается по клеткам командами вправо и вниз: по команде вправо он переходит в соседнюю правую клетку, по команде вниз — в соседнюю нижнюю. Квадрат ограничен внешними стенами, между клетками бывают внутренние стены, сквозь стену Робот пройти не может. В каждой клетке лежит монета достоинством от 1 до 30. Посетив клетку, Робот забирает монету, это относится и к начальной, и к конечной клетке.
Робот идёт из левой верхней клетки A1 в правую нижнюю клетку E5. Определите максимальную и минимальную денежные суммы, которые он может собрать. В ответе укажите два числа: сначала максимальную сумму, затем минимальную.
Поле (строки 1–5, столбцы A–E):
A B C D E
1 12 7 25 3 18
2 4 30 9 21 6
3 17 2 14 8 27
4 23 11 5 19 10
5 8 26 15 4 13
Внутренние стены проходят по правой границе клеток B2 и B3 (из B2 нельзя пройти в C2, из B3 — в C3) и по нижней границе клетки D3 (из D3 нельзя пройти в D4).
Проверка ответа на Python
grid = [
[12, 7, 25, 3, 18],
[4, 30, 9, 21, 6],
[17, 2, 14, 8, 27],
[23, 11, 5, 19, 10],
[8, 26, 15, 4, 13],
]
# Стены: из клетки (строка, столбец) нельзя пройти вправо / вниз. Нумерация с нуля.
no_right = {(1, 1), (2, 1)} # правые границы клеток B2 и B3
no_down = {(2, 3)} # нижняя граница клетки D3
n = len(grid)
hi = [[None] * n for _ in range(n)]
lo = [[None] * n for _ in range(n)]
for r in range(n):
for c in range(n):
if r == 0 and c == 0:
hi[r][c] = lo[r][c] = grid[r][c]
continue
prev = []
if c > 0 and (r, c - 1) not in no_right and hi[r][c - 1] is not None:
prev.append((hi[r][c - 1], lo[r][c - 1]))
if r > 0 and (r - 1, c) not in no_down and hi[r - 1][c] is not None:
prev.append((hi[r - 1][c], lo[r - 1][c]))
if prev:
hi[r][c] = max(p[0] for p in prev) + grid[r][c]
lo[r][c] = min(p[1] for p in prev) + grid[r][c]
print(hi[n - 1][n - 1], lo[n - 1][n - 1])Ответ: 132 83
В клетки C2 и C3 Робот приходит только сверху, в клетку D4 — только слева, поэтому в этих клетках формула берёт одного соседа. В клетке E5 таблица максимумов даёт 132, таблица минимумов — 83. Наибольшую сумму даёт путь A1 → B1 → C1 → C2 → D2 → D3 → E3 → E4 → E5: 12 + 7 + 25 + 9 + 21 + 8 + 27 + 10 + 13 = 132. Наименьшую — путь A1 → A2 → A3 → B3 → B4 → C4 → C5 → D5 → E5: 12 + 4 + 17 + 2 + 11 + 5 + 15 + 4 + 13 = 83.
Пример 2
Квадрат разлинован на 6 × 6 клеток, правила движения Робота и сбора монет те же, что в примере 1. Робот начинает путь в клетке A1. В клетке, которая справа и снизу ограничена стенами, Робот не может продолжать движение, и накопленная сумма считается итоговой. Таких конечных клеток может быть несколько, правая нижняя клетка F6 — одна из них.
Определите максимальную и минимальную денежные суммы среди всех возможных итоговых сумм. В ответе укажите два числа: сначала максимальную сумму, затем минимальную.
Поле (строки 1–6, столбцы A–F):
A B C D E F
1 14 3 27 9 31 5
2 22 40 6 18 2 36
3 7 15 33 4 25 11
4 29 1 12 38 8 20
5 5 24 17 10 44 3
6 16 9 28 6 13 21
Внутренние стены: по правой границе клеток D1 и D2, по правой и нижней границам клетки C4, по нижней границе клетки F3.
Проверка ответа на Python
grid = [
[14, 3, 27, 9, 31, 5],
[22, 40, 6, 18, 2, 36],
[7, 15, 33, 4, 25, 11],
[29, 1, 12, 38, 8, 20],
[5, 24, 17, 10, 44, 3],
[16, 9, 28, 6, 13, 21],
]
# Стены (нумерация строк и столбцов с нуля): C4 закрыта справа и снизу, D1 и D2 — справа, F3 — снизу.
no_right = {(3, 2), (0, 3), (1, 3)}
no_down = {(3, 2), (2, 5)}
n = len(grid)
hi = [[None] * n for _ in range(n)]
lo = [[None] * n for _ in range(n)]
for r in range(n):
for c in range(n):
if r == 0 and c == 0:
hi[r][c] = lo[r][c] = grid[r][c]
continue
prev = []
if c > 0 and (r, c - 1) not in no_right and hi[r][c - 1] is not None:
prev.append((hi[r][c - 1], lo[r][c - 1]))
if r > 0 and (r - 1, c) not in no_down and hi[r - 1][c] is not None:
prev.append((hi[r - 1][c], lo[r - 1][c]))
if prev:
hi[r][c] = max(p[0] for p in prev) + grid[r][c]
lo[r][c] = min(p[1] for p in prev) + grid[r][c]
def final(r, c):
"""Конечная клетка: справа и снизу стена (внешняя или внутренняя)."""
closed_right = c == n - 1 or (r, c) in no_right
closed_down = r == n - 1 or (r, c) in no_down
return hi[r][c] is not None and closed_right and closed_down
ends = [(r, c) for r in range(n) for c in range(n) if final(r, c)]
print(max(hi[r][c] for r, c in ends), min(lo[r][c] for r, c in ends))Ответ: 254 71
Конечных клеток три: C4 (стены справа и снизу), F3 (справа внешняя стена, снизу внутренняя) и F6. В клетки E1, F1, E2 и F2 Робот попасть не может: из D1 и D2 вправо не пройти, а в E2 сверху можно прийти только из недоступной E1. В таблице максимумов в конечных клетках стоят 136, 164 и 254, в таблице минимумов — 71, 108 и 149. Максимальная итоговая сумма — 254, минимальная — 71: её даёт остановка в C4.
Типичные ошибки
- Копируют формулу на всё поле и забывают поправить клетки рядом со стенами.
- Смотрят только на правую нижнюю клетку, хотя в заданиях 2027 года конечных клеток может быть несколько.
- Меняют порядок чисел в ответе: сначала записывается максимальная сумма, затем минимальная.
- Копируют таблицу максимумов для минимумов и забывают заменить МАКС на МИН в поправленных вручную клетках.
Потренироваться на тренажёре
Частые вопросы
Как в файле к заданию 18 обозначены стены?
В демоверсии внутренние и внешние стены обозначены утолщёнными линиями на границах клеток электронной таблицы. Перед тем как писать формулы, найдите все такие линии внутри поля.
В какой программе открывать файл?
Файл к заданию 18 в демоверсии 2027 года дан в формате .ods, его открывает LibreOffice Calc. О форматах файлов на экзамене есть отдельная страница.
Можно ли решить задание 18 программой?
Можно, если переписать поле и стены в программу, как в примерах. Стены в программу приходится переносить вручную, а в электронной таблице они видны прямо на поле.
Официальные материалы
Другие задания
Все задания и структура экзамена — на странице ЕГЭ по информатике. Соседние разборы: задание 17 и задание 19.
Описание задания сверено 28 сентября 2026 года со спецификацией 2027 года (документы 2027 года). Примеры составлены нами по структуре демоверсии, каждое решение запущено, и напечатанный им ответ совпадает с ответом на странице. Кодолимп не связан с разработчиками экзамена. Заметили неточность — напишите нам.