TSG LIVE! 13 プログラミングコンテスト
コンテスト日時
2024/11/23 (Sa) 13:05 - 14:45

J - Zero Diag Matrix

Flavor
2
s
1024
MB
600

問題文

長さ $N$ の整数列 $A$ が与えられる。以下の条件を満たす $N\times N$ の 2 次元配列 $M$ が存在するか判定し、存在するなら 1 つ出力せよ。

  • $M_{ij}\ge0$
  • $0\le M_{ii}\le10^{-5}$
  • $|A_i-\sum_jM_{ij}|\le10^{-5}$
  • $|A_i-\sum_jM_{ji}|\le10^{-5}$
  • $i\neq j$ かつ $i\neq k$ のとき $sgn(A_j-A_k)(M_{ij}-M_{ik})\ge-10^{-5}$
  • $i\neq j$ かつ $i\neq k$ のとき $sgn(A_j-A_k)(M_{ji}-M_{ki})\ge-10^{-5}$

ただし $sgn(x)=\begin{cases}-1&(x<0)\\0&(x=0)\\1&(x>0)\end{cases}$ とする。

制約

  • $1\le N\le10^3$
  • $0\le A_i<10^9$
  • 入力はすべて整数

入力

入力は以下の形式で与えられます。

$N$
$A_1\ A_2\ A_3\ \cdots\ A_N$

出力

2次元配列 $M$ が存在しないときは No と出力してください。

No
2次元配列 $M$ が存在するときは以下のように $N+1$ 行出力してください。
Yes
$M_{11}\ M_{12}\ M_{13}\ \cdots\ M_{1N}$
$M_{21}\ M_{22}\ M_{23}\ \cdots\ M_{2N}$
$M_{31}\ M_{32}\ M_{33}\ \cdots\ M_{3N}$
$\ \vdots$
$M_{N1}\ M_{N2}\ M_{N3}\ \cdots\ M_{NN}$

数を出力するときは小数点に . (ピリオド) を使用し、0123456789. の 11 種以外の文字や 2 つ以上のピリオドを含まないようにしてください。

入力例 1
4 4 2 3 1
出力例 1
Yes 0 1 2 1 1 0 1 0 2 1 0 0 1 0 0 0
入力例 2
3 1 1 1
出力例 2
Yes 0.0 0.5 0.5 0.5 0.0 0.5 0.5 0.5 0.0
提出
C++23 (g++ 12.2.0)