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

Задача . E. Задача про матрицу


Вам дана матрица \(a\), состоящая из \(n\) строк и \(m\) столбцов. Каждый элемент матрицы равен \(0\) или \(1\).

Вы можете выполнять следующую операцию любое количество раз (возможно, ни одного): выбрать элемент матрицы и заменить его на \(0\) или \(1\).

Также вам даны два массива \(A\) и \(B\) (длиной \(n\) и \(m\) соответственно). После выполнения операций матрица должна удовлетворять следующим условиям:

  1. количество единиц в \(i\)-й строке матрицы должно быть ровно \(A_i\) для каждого \(i \in [1, n]\).
  2. количество единиц в \(j\)-м столбце матрицы должно быть ровно \(B_j\) для каждого \(j \in [1, m]\).

Вычислите минимальное количество операций, которое вам нужно выполнить.

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

Первая строка содержит два целых числа \(n\) и \(m\) (\(2 \le n, m \le 50\)).

Затем следуют \(n\) строк. \(i\)-я из них содержит \(m\) целых чисел \(a_{i,1}, a_{i,2}, \dots, a_{i,m}\) (\(0 \le a_{i,j} \le 1\)).

Следующая строка содержит \(n\) целых чисел \(A_1, A_2, \dots, A_n\) (\(0\le A_i\le m\)).

Следующая строка содержит \(m\) целых чисел \(B_1, B_2, \dots, B_m\) (\(0\le B_i\le n\)).

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

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


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

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

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