Найкращий гребінець#4885

Найкращий гребінець

1 секунда
64 мегабайти
Легка

Після опанування викликів зі знаходження найбільших квадратів та прямокутників із нулів у числовій матриці, з'явилася нова, більш узагальнена задача. Дано матрицю, що складається з нулів та одиниць, потрібно знайти оптимальний "гребінець", який можна побудувати із нульових клітинок у цій матриці. Оптимальним гребінцем називається такий, що покриває максимальну кількість клітинок у матриці. Ланкою гребінця є непорожній прямокутний фрагмент, що складається лише з нульових елементів матриці, тобто підматриця з площею більшою за нуль, що містить лише нулі. -гребінець — це структура, утворена вертикальним з'єднанням (0 \leq k \leq m) ланок. У цих ланках ліва -координата має бути однаковою, сусідні ланки повинні відрізнятися за шириною, а всі ланки разом утворювати зв'язну фігуру. -гребінець завжди існує та має розмір .

Ілюстрація на Рисунку зображує валідний -гребінець. Хоча структура займає рядків, це саме -гребінець, оскільки другий та третій рядки знизу належать одній і тій же ланці (сусідні ланки повинні відрізнятися шириною, але ланка може охоплювати більше ніж рядок). Структура на Рисунку не є валідним гребінцем, оскільки ліві -координати ланок не збігаються. Аналогічно, структура на Рисунку не є валідним гребінцем, оскільки не є зв'язною. Варто відзначити, що оптимальний прямокутник еквівалентний найкращому -гребінцю (гребінець з висотою ланка). Очевидно, що для кожної довжини у матриці можна або знайти найкращий гребінець, або зробити висновок про його відсутність (тобто найкращий гребінець має розмір ). Наприклад, на Рисунку підсвічено найкращий -гребінець (ненульові елементи матриці позначено ).

Рис. 4

Ваша задача — визначити розмір найбільшого гребінця серед усіх -гребінців, які можна побудувати на нульових клітинках заданої матриці (для усіх від до ).

Вхідні дані

У першому рядку вхідного файлу містяться два цілих числа: висота (1 \leq m \leq 2000) і ширина (1 \leq n \leq 2000) матриці. Далі йдуть рядків по чисел, розділених пробілами, які описують матрицю.

Вихідні дані

У вихідний файл треба вивести розмір найбільшого гребінця серед усіх -гребінців, які можна утворити лише із нульових клітинок вхідної матриці.

Приклади

Приклад 1

Loading
Loading