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

Задача . G. A/B матрица


Вам даны четыре целых положительных числа \(n\), \(m\), \(a\), \(b\) (\(1 \le b \le n \le 50\); \(1 \le a \le m \le 50\)). Найдите любую такую прямоугольную матрицу размера \(n \times m\), что выполняются все следующие условия:

  • в каждой строке матрицы ровно \(a\) единиц;
  • в каждом столбце матрицы ровно \(b\) единиц;
  • все остальные элементы — нули.

Если искомой матрицы не существует, то укажите это.

Например, для \(n=3\), \(m=6\), \(a=2\), \(b=1\) существует такая матрица, удовлетворяющая условиям выше:

\(\) \begin{vmatrix} 0 & 1 & 0 & 0 & 0 & 1 \\ 1 & 0 & 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 & 1 & 0 \end{vmatrix} \(\)

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

В первой строке записано целое число \(t\) (\(1 \le t \le 1000\)) — количество наборов тестовых данных в тесте. Далее следуют \(t\) наборов тестовых данных.

Каждый набор тестовых данных описывается четырьмя целыми положительными числами \(n\), \(m\), \(a\), \(b\) (\(1 \le b \le n \le 50\); \(1 \le a \le m \le 50\)), где \(n\) и \(m\) — размеры матрицы, а \(a\) и \(b\) — ограничения на количества единиц для строк и столбцов, соответственно.

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

Для каждого набора тестовых данных выведите:

  • «YES» (без кавычек) и искомую матрицу (если существует несколько ответов, выведите любой), если она существует, или,
  • «NO» (без кавычек), если ее не существует.

Чтобы вывести матрицу \(n \times m\), выведите \(n\) строк, каждая из которых содержит \(m\) чисел \(0\) или \(1\), описывающих очередную строку матрицы. Числа нужно выводить без пробелов.


Примеры
Входные данныеВыходные данные
1 5
3 6 2 1
2 2 2 1
2 2 2 2
4 4 2 2
2 1 1 2
YES
010001
100100
001010
NO
YES
11
11
YES
1100
1100
0011
0011
YES
1
1

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

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