eolymp
bolt
Try our new interface for solving problems
Məsələlər

Наилучшая расческа

Наилучшая расческа

После того, как задачи нахождения в числовой матрице наибольших квадратов и прямоугольников из нулей стали стандартными, появилась новая задача, обобщающая все предыдущие. Дана матрица из нулей и единиц. Необходимо найти наилучшую "расческу"', которую можно построить на нулевых ячейках этой матрицы (наилучшей называется расческа, которая занимает наибольшее количество ячеек данной матрицы). Звеном расчески называется непустая прямоугольная область из нулей в матрице, то есть некоторая подматрица ненулевой площади, состоящая только из нулей. \textbf{k}-расческой называется фигура, получаемая соединением по вертикали \textbf{k} (\textbf{0} ≤ \textbf{k} ≤ \textbf{m}) звеньев. У всех звеньев должна совпадать \textbf{x}-координата левой стороны, соседние звенья должны иметь разную ширину, а все звенья вместе должны образовывать цельную фигуру, то есть должны быть связаны. При этом \textbf{0}-расческа существует всегда и имеет размер \textbf{0}. Фигура на рисунке \textbf{1} является правильной \textbf{7}-расческой. Хотя фигура занимает \textbf{8} строк, она является \textbf{7}-расческой, так как на второй и третьей снизу строках находится одно и то же звено (соседние звенья обязательно должны быть разной ширины, но звено может быть высотой более \textbf{1} строки). Фигура на рисунке \textbf{2} не является правильной расческой, так как левая \textbf{x}-координата звеньев не совпадает. Фигура на рисунке \textbf{3} также не является правильной расческой, так как не является связной фигурой. Можно заметить, что наилучший прямоугольник это то же самое что наилучшая \textbf{1}-расческа (расческа высоты \textbf{1} звено). Очевидно, что для каждой длины \textbf{k} в матрице можно либо найти наилучшую расческу, либо заявить, что ее нет (то есть наилучшая расческа имеет размер \textbf{0}). Например, на рисунке \textbf{4} обозначена лучшая \textbf{3}-расческа (знаком \textbf{X} обозначены ненулевые элементы в матрице). \includegraphics{https://static.e-olymp.com/content/12/124f526f0998393c49c53062f8daa13014b001b4.jpg} \textit{\textbf{Рис. 4}} Ваша задача - найти в данной матрице наилучшую расческу среди всех \textbf{k}-расчесок матрицы (для всех \textbf{k} от \textbf{0} до \textbf{m}). \InputFile В первой строке входного файла даны два целых числа - высота (\textbf{1} ≤ \textbf{m} ≤ \textbf{2000}) и ширина (\textbf{1} ≤ \textbf{n} ≤ \textbf{2000}) матрицы соответственно. Далее, в \textbf{m} строках дано по \textbf{n} чисел через пробел - исходная матрица. \OutputFile В выходной файл необходимо вывести размер наибольшей расчески среди всех \textbf{k}-расчесок, которую можно построить на нулевых ячейках входной матрицы.
Zaman məhdudiyyəti 1 saniyə
Yaddaşı istafadə məhdudiyyəti 64 MiB
Giriş verilənləri #1
3 4
0 0 1 0
0 1 0 0
0 0 0 0
Çıxış verilənləri #1
7
Mənbə Blitz Contest by SPbETU & Michael Dvorkin, Petrozavodsk Winter Training Session, January 31, 2006