CF850D.Tournament Construction
普及/提高-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Ivan is reading a book about tournaments. He knows that a tournament is an oriented graph with exactly one oriented edge between each pair of vertices. The score of a vertex is the number of edges going outside this vertex.
Yesterday Ivan learned Landau's criterion: there is tournament with scores d1<=d2<=...<=dn if and only if for all 1<=k<n and
.
Now, Ivan wanna solve following problem: given a set of numbers S=a1,a2,...,am , is there a tournament with given set of scores? I.e. is there tournament with sequence of scores d1,d2,...,dn such that if we remove duplicates in scores, we obtain the required set a1,a2,...,am ?
Find a tournament with minimum possible number of vertices.
输入格式
The first line contains a single integer m ( 1<=m<=31 ).
The next line contains m distinct integers a1,a2,...,am ( 0<=ai<=30 ) — elements of the set S . It is guaranteed that all elements of the set are distinct.
输出格式
If there are no such tournaments, print string "=(" (without quotes).
Otherwise, print an integer n — the number of vertices in the tournament.
Then print n lines with n characters — matrix of the tournament. The j -th element in the i -th row should be 1 if the edge between the i -th and the j -th vertices is oriented towards the j -th vertex, and 0 otherwise. The main diagonal should contain only zeros.
输入输出样例
输入#1
2 1 2
输出#1
4 0011 1001 0100 0010
输入#2
2 0 3
输出#2
6 000111 100011 110001 011001 001101 000000