Codeforces Round 277 (Div. 2) |
---|
Закончено |
Определим логический 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. Если решений несколько, выведите любое.
2 2
1 0
0 0
NO
2 3
1 1 1
1 1 1
YES
1 1 1
1 1 1
2 3
0 1 0
1 1 1
YES
0 0 0
0 1 0
Название |
---|