Олимпиадный тренинг

Задача . C. Штрихкод


Задача

Темы: дп матрицы *1700

Имеется картинка размера n × m пикселов. Каждый пиксел может быть белым или черным. Требуется изменить цвета как можно меньшего количества пикселов так, чтобы получилась картинка-штрихкод.

Картинка является штрихкодом если выполняются следующие условия:

  • В каждом столбце все пикселы одного цвета.
  • Ширина каждой одноцветной вертикальной полосы не менее x и не более y пикселов. Другими словами, если сгруппировать все соседние столбцы пикселов одного цвета, то не должно получиться группы размера менее x или более y.
Входные данные

В первой строке записаны четыре целых числа через пробел n, m, x и y (1 ≤ n, m, x, y ≤ 1000; x ≤ y).

Далее идет n строк, описывающих исходную картинку. В каждой из этих строк содержится ровно m символов. Символ «.» обозначает белый пиксел, а «#» — черный. Никаких других символов кроме «.» и «#» в описании картинки не содержится.

Выходные данные

В первой строке выведите наименьшее количество пикселов, которое нужно перекрасить. Гарантируется, что ответ существует.

Примечание

В первом тестовом примере картинка после перекрашивания может выглядеть следующим образом:


.##..
.##..
.##..
.##..
.##..
.##..

Во втором тестовом примере картинка после перекрашивания может выглядеть следующим образом:


.#.#.
.#.#.

Примеры
Входные данныеВыходные данные
1 6 5 1 2
##.#.
.###.
###..
#...#
.##.#
###..
11
2 2 5 1 1
#####
.....
5

time 2000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя