这是签到
时间限制:C/C++/Rust/Pascal 5秒,其他语言10秒
空间限制:C/C++/Rust/Pascal 1024 M,其他语言2048 M
64bit IO Format: %lld

题目描述

毛毛看到Sakura出的计算题之后发现太难了就稍微改了一下。然后转头就让冰冰来做这道题。

题目要求冰冰得到一个 n \times m 的行列式。有些行列式可能无法直接计算,但可以做一个操作:在行或列补充全为 0 的一行或一列,使其变为可计算的。不过最多只能扩充成 max(n,m) \times max(n,m) 的行列式。要想拿满分,需计算所有可计算行列式中从 (1,1) 位置构成的最小值

输入描述:

第一行给出两个整数n,m

接下来的n行,每行给出m个整数。
1\le n,m\le5,|a_{ij}|\le10

输出描述:

输出一个整数,所有构成可计算行列式的最小值。
示例1

输入

复制
3 4
1 2 3 1
4 5 6 1
7 8 9 1

输出

复制
-3

说明

(1,1)位置开始:

可以构成的1 \times 1行列式:\begin{bmatrix} 1 \end{bmatrix}=1

可以构成的2 \times 2 行列式: \begin{bmatrix} 1 & 2 \\ 4 & 5 \end{bmatrix}=-3

可以构成的3 \times 3 行列式:\begin{bmatrix} 1 & 2 &3 \\ 4 & 5 &6 \\7&8&9 \end{bmatrix}=0

因为n=3,m=4,所以可以按照题目,在第四行用0补全。

构成的4 \times 4 行列式: \begin{bmatrix} 1 & 2&3&1 \\ 4 & 5&6&1 \\7&8&9&1\\0&0&0&0 \end{bmatrix} = 0

故所有可计算的行列式的最小值为 -3

备注:

简单行列式计算规则:
    1.行列式只有的可以计算
    2.行列式可以用以下方法计算得出: 其中N\left( j_{1}j_{2}...j_{n} \right)表示为排列\left( j_{1}j_{2}...j_{n} \right)的逆序对的个数

行列式
对于 行列式 ,用对角线计算方法:
左上至右下对角线乘积相加:
右上至左下对角线乘积相减:
相减后即为行列式结果:
行列式
对于 行列式 ,对角线法则展开:
沿主对角线(左上至右下)乘积求和:
沿副对角线(右上至左下)乘积求差:
对主对角线求和减去副对角线求差,即为最终结果。