eolymp
bolt
Try our new interface for solving problems
Problems

MaxSum (visit each column)

MaxSum (visit each column)

Есть прямоугольная таблица размером \textbf{N} строк на \textbf{M} столбиков. В каждой клетке записано целое число. По ней можно пройти сверху вниз, начиная из любой клетки верхней строки, дальше каждый раз переходя в одну из "нижних соседних" клеток (иными словами, из клетки с номером (\textbf{i}, \textbf{j}) можно перейти или на (\textbf{i+1}, \textbf{j-1}), или на (\textbf{i+1}, \textbf{j}), или на (\textbf{i+1}, \textbf{j+1}); в случае \textbf{j=M} последний из трёх описанных вариантов становится невозможным, а в случае \textbf{j=1} - первый) и закончить маршрут в какой-нибудь клетке нижней строки. Напишите программу, которая будет находить максимально возможную сумму значений пройденных клеток среди всех допустимых путей, проходящих хотя бы по одному разу через каждый из столбиков. \InputFile В первой строке записаны \textbf{N} и \textbf{M} - количество строчек и количество столбиков (\textbf{2} ≤ \textbf{N} ≤ \textbf{1024}, \textbf{2} ≤ \textbf{M} ≤ \textbf{768}, \textbf{N} ≥ \textbf{M}), дальше в каждой из следующих \textbf{N} строк записано ровно \textbf{M} разделённых пробелами целых чисел, не превышающих по модулю \textbf{10^6} - значения клеток таблицы. \OutputFile Вывести единственное число - найденную максимальную (среди путей, проходящих через все столбики) сумму. \textbf{Примечание}: Ответ равен \textbf{28 = 15+5+2+6}, потому что все пути с большей суммой проходят не через все столбики. Обратите внимание, что в задаче большой размер входного файла. На C++ не рекомендуется использовать \textit{cin} со включенной синхронизацией, на java не рекомендуется использовать \textit{Scanner} - это может привести к тому, что программа не успеет прочитать входные данные.
Time limit 2 seconds
Memory limit 512 MiB
Input example #1
4 3
1 15 2
9 7 5
9 2 4
6 9 -1
Output example #1
28
Author Илья Порублёв
Source Летняя школа Севастополь 2013, Волна 1, День 2