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

Задача . B. Сережа и таблица


У Сережи есть прямоугольная таблица a размера n × m, в каждой ячейке которой находится нуль или единица. Сережа хочет, чтобы его таблица обладала следующим свойством: каждая компонента связности из одинаковых значений образует прямоугольник, стороны которого параллельны сторонам таблицы. Прямоугольники должны быть заполненными, другими словами, если компонента образует прямоугольник h × w, то она должна состоять из ровно hw ячеек таблицы.

Компонентой связности из одинаковых значений называется множество ячеек таблицы, удовлетворяющих свойствам:

  • значения во всех ячейках одинаковые;
  • ячейки множества образуют связную область в таблице (две ячейки связны, если они являются соседними в какой-то строке или в каком-то столбце таблицы);
  • невозможно добавить ни одной ячейки в множество, не нарушив предыдущие два свойства.

Может ли Сережа поменять значения не более k ячеек таблицы на противоположное, чтобы таблица обладала описанным свойством? Какое минимальное количество ячеек таблицы при этом нужно изменить?

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

Первая строка содержит целые числа n, m и k (1 ≤ n, m ≤ 100; 1 ≤ k ≤ 10). Следующие n строк описывают таблицу a: i-я из них содержит m целых чисел ai1, ai2, ..., aim (0 ≤ ai, j ≤ 1) — элементы i-й строки таблицы.

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

Выведите -1, если сделать задуманное невозможно. В противном случае выведите минимальное количество ячеек, в которых нужно поменять значение на противоположное, чтобы таблица удовлетворяла описанному свойству.


Примеры
Входные данныеВыходные данные
1 5 5 2
1 1 1 1 1
1 1 1 1 1
1 1 0 1 1
1 1 1 1 1
1 1 1 1 1
1
2 3 4 1
1 0 0 0
0 1 1 1
1 1 1 0
-1
3 3 4 1
1 0 0 1
0 1 1 0
1 0 0 1
0

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

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