#551. 金字塔数独

金字塔数独

创英天资聪颖,酷爱数学,尤其擅长做数独游戏。不过普通的数独游戏已经满足不了小明了,于是他发明了一种“金字塔数独”:

下图即为金字塔数独。和普通数独一样,在 9×99 \times 9 的大九宫格中有 993×33×3 的小九宫格(用粗黑色线隔开的)。要求每个格子上都有一个 1199 的数字,每个数字在每个小九宫格内不能重复出现,每个数字在每行、每列也不能重复出现。

但金字塔数独的每一个格子都有一个分值,类似金字塔的俯视图。如图所示,白色格子为 66 分,蓝色格子为 77 分,绿色格子为 88 分,紫色格子为 99 分,红色格子为 1010 分。颜色相同的格子分值一样,离中心越近则分值越高。

金字塔数独的总分等于每个格子上的数字和对应的分值乘积之和。现在小明给定金字塔数独的若干数字,请问如何填写,可以使得金字塔数独的总分最高。

输入格式

输入一共 99 行。每行输入 99 个整数(每个数都在 0099 的范围内),每两个整数之间用一个空格隔开,“0”表示该格子为空。

输出格式

输出为一行,输出一个整数,代表金字塔数独的最高总分。如果数独无解,则输出 1−1

格式说明输出时每行末尾的多余空格,不影响答案正确性

输入、输出要求要求使用「文件输入、输出」的方式解题,输入文件为 tower.in,输出文件为 tower.out

样例输入

0 0 0 0 0 0 0 0 0
0 0 3 0 0 0 9 0 0
7 9 0 0 0 2 0 1 3
0 0 9 1 5 0 0 0 0
0 7 4 0 2 6 1 3 9
0 0 6 0 0 0 0 0 0
6 0 0 0 0 7 0 0 0
3 1 0 4 0 5 7 9 6
0 0 7 0 0 1 0 4 0

样例输出

2864