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

Задача . G. Не равны


Задача

Темы: Конструктив *2600

Вам задан массив целых чисел \(a_1, a_2, \dots, a_n\), где \(a_i\) означает количество блоков на \(i\)-й позиции. Гарантируется, что \(1 \le a_i \le n\).

За одну операцию вы можете выбрать любое подмножество индексов и убрать один блок на каждой позиции в выбранном подмножестве. Вы не можете убрать блок с позиции, на которой уже нет блоков.

Все подмножества которые вы выбираете должны быть различными (уникальными).

Вам необходимо удалить все блоки за не более чем \(n+1\) операцию. Можно доказать, что ответ всегда существует.

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

В первой строке записано одно целое число \(n\) (\(1 \le n \le 10^3\)) — длина данного массива.

Во второй строке записаны \(n\) целых чисел \(a_1, a_2, \dots, a_n\) (\(1 \le a_i \le n\)) — количество блоков на позициях \(1, 2, \dots, n\).

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

В первой строке выведите целое число \(op\) (\(0 \le op \le n+1\)).

В каждой из следующих \(op\) строк выведите бинарную строку \(s\) длины \(n\). Если \(s_i=\)'0', это означает, что позиция \(i\) не находится в выбранном подмножестве. Иначе, \(s_i\) должно быть равно '1', и позиция \(i\) находится в выбранном подмножестве.

Все строки должны быть различными и \(a_i\) должно быть равно сумме \(s_i\) по всем выбранным бинарным строкам.

Если есть несколько возможных ответов, вы можете вывести любой.

Гарантируется, что ответ существует.

Примечание

В первом примере количество блоков уменьшается следующим образом:

\(\lbrace 5,5,5,5,5 \rbrace \to \lbrace 4,4,4,4,4 \rbrace \to \lbrace 4,3,3,3,3 \rbrace \to \lbrace 3,3,2,2,2 \rbrace \to \lbrace 2,2,2,1,1 \rbrace \to \lbrace 1,1,1,1,0 \rbrace \to \lbrace 0,0,0,0,0 \rbrace\). Можно заметить, что все эти операции отличаются друг от друга.


Примеры
Входные данныеВыходные данные
1 5
5 5 5 5 5
6
11111
01111
10111
11011
11101
11110
2 5
5 1 1 1 1
5
11000
10000
10100
10010
10001
3 5
4 1 5 3 4
5
11111
10111
10101
00111
10100

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

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