Динамическое программирование в электронных таблицах
Квадрат разлинован на N × N клеток (1 < N < 30). Исполнитель Робот может перемещаться по клеткам, выполняя за одно перемещение одну из трёх команд: влево, вверх или влево-вверх. По команде влево Робот перемещается в соседнюю левую клетку, по команде вверх — в соседнюю верхнюю, а по команде влево-вверх — расположенную на одну позицию левее и на одну позицию выше текущей.
Квадрат ограничен внешними стенами. Между соседними клетками квадрата также могут быть внутренние стены. Сквозь стену Робот пройти не может. Движение по диагонали допустимо, если попасть в целевую клетку возможно последовательным выполнением команд влево и вверх, но не вверх и влево.
Перед каждым запуском Робота в каждой клетке квадрата лежит монета достоинством от 1 до 100. Посетив клетку, Робот забирает монету с собой. Посещённой считается клетка, в которой Робот оказался после выполнения команды. К начальной клетке маршрута это не относится.
В угловых клетках поля, которые слева и сверху ограничены стенами, Робот продолжать движение не может, поэтому, когда он попадает в них, накопленная сумма считается итоговой. Таких конечных клеток на поле может быть несколько, включая левую верхнюю клетку поля. При разных запусках итоговые накопленные суммы могут различаться.
Определите максимальную и минимальную денежные суммы, которые может собрать Робот, пройдя из правой нижней клетки в конечную. В ответе укажите два числа — сначала максимальную сумму, затем минимальную.
Исходные данные представляют собой электронную таблицу размером N × N, каждая ячейка которой соответствует клетке квадрата. Внутренние и внешние стены обозначены утолщёнными линиями.
Пример входных данных