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

Задача . B. OR в матрице


Определим логический OR как операцию над двумя логическими значениями (то есть, значениями, которые принадлежат множеству {0, 1}), которая даёт 1, если один или оба операнда равны 1, в противном случае операция даёт 0. Можно определить логическое OR трех или более логических значений аналогичным образом:

, где , равняется 1, если какое-то из ai = 1, в противном случае результат равняется 0.

У Нама есть матрица A, состоящая из m строк и n столбцов. Строки пронумерованы от 1 до m, столбцы пронумерованы от 1 до n. Элемент в строке i (1 ≤ i ≤ m) и столбце j (1 ≤ j ≤ n) обозначается как Aij. Все элементы A равны либо 0, либо 1. По матрице A Нам строит матрицу B того же размера, используя следующюю формулу:

.

(Bij — OR всех элементов в строке i со всеми элементами столбца j матрицы A)

Нам дает вам матрицу B и бросает вызов: сможете ли вы угадать матрицу A? Хотя Нам умен, он вполне мог ошибиться в подсчете матрицы B, так как размеры матрицы A могут быть очень большими.

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

В первой строке записано два целых числа m и n (1 ≤ m, n ≤ 100) — количество строк и колонок матриц соответственно.

В следующих m строках записано по n целых чисел через пробелы — строки матрицы B (каждый элемент B равен либо 0, либо 1).

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

В первой строке выведите «NO», если Нам ошибся при подсчитывании B, в противном случае выведите «YES». Если первая строка равна «YES», то выведите также m строк по n целых чисел — матрицу A, по которой могла быть получена данная матрица B. Если решений несколько, выведите любое.


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

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

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