[本校测试] 魔王的消失Day2——By Hineven T3葬诗 提交答案题(爬山算法)

葬诗

Unconventional Problem / 非传统题目

题目描述

现有一段长文本 P 和一个某些位置能摆放按键的 100*100 大小网格状键盘基座,你需要将 1 到 500 共 500 个不同字符的按键安置在键盘上,最小化一根手指操作键盘输入 P 时指尖的水平移动距离。

注意,指尖必须移动到按键中心才能按下按键,按下按键产生的竖直移动距离不计入答 案,键盘基座是一个完美的正 100*100 网格,网格的每一小格都是长宽均为 1 的标准正方 形

输入文件

本题下发文件包含了键盘基座描述文件 keyboard,文本文件 P。

文本文件 P 即为题目描述中提到的 P,包含了超过五百万个大于等于 1 小于等于 500 的 整数,每个整数 c 表示一个编号为 c 的字符。

你可以根据 P 的特征设计你的键盘。

键盘基座描述文件 keyboard 包含一个 100*100 的字符网格,第 i 行第 j 列的字符表示 键盘基座上格点(i,j)的状态,若该字符为空格(‘ ’)则表示该格点可以放置按键,否然不能放置按键。

答案格式与提交方式

你的答案应被命名为 answer(没有扩展名),answer 应该是一个文本文档,包含 100 行 文本,每一行包含 100 个整数。 位于第 i 行第 j 列的整数 c 如果为 0,则表示键盘格点(i,j)不放置按键,否然则表示 格点(i,j)放置能输入第 c 种字符的按键。 本题下发了一个样例答案 sample_answer,该答案虽然不优但合法,你可以参考该答案 了解答案应有的格式。 本题也下发有评分器 grader.cpp。将 grader.cpp 编译为 grader.exe 并将文本文件 P 与其置于同一目录下,可以使用命令‘grader < answer’来查看你答案的得分。若 grader 崩溃,该答案得 0 分。否然 grader 将会给出答案的得分,该得分与正式评测时的实际得分 一致。 提交答案时,你只需要提交一个合法的 answer 文件即可。

 

 

题目的意思应该不用解释了。。。

 

 

 

(蒟蒻并不知道如何添加下载地址,所以把与题解有关的文件直接贴了出来)

 

接下来准备好护目镜:

keyboard:

@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@ @@@@  @@@@@@@@ @@@@@ @@@@@@ @@@@
@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@ @@@@@@@@@@ @@@@ @ @@@@@@ @ @@@ @ @@@@@ @@@@@ @@@@@@@@@@ @
@@@@@@@@@@@ @@ @@ @@  @@@@ @@@@@@ @@@@@@@@@@@@ @@@ @@@ @ @@@@@ @ @@@@@@@@@@ @ @@@@@@@@@@@ @@ @@@@@@ 
@@@@@@  @@@@@@@@@@@@@@@@@@@@@@@@@@@  @@@@ @@@@ @@@@@@@@@@@@@@@@ @ @@@@@@@@ @ @@@@@ @@ @@@@@@@@ @@@@@
@@@@@@@@@@@ @ @@@@@   @@@ @@@@@@@@@@@@@@ @@@@ @@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@ @@@@@ @@@ @@@@@ @
@@@@@@@@@@@@@ @@@@@@@  @@@@@@@@@@@@@@@@@@@@@@ @@@@@ @ @@@@@@ @@@ @  @@ @@@@@@@  @@  @@@@@@@@@@@@@@@@
@@@@ @@@@@@@@@@ @@@@@@@@@@ @@@ @@@@@ @@@@@@  @ @@@ @@ @@@@@@@@@ @@ @@ @@ @@ @@@@@@ @@ @@@@@@@@@@@ @@
 @@  @@@@@@@@ @@  @  @@ @@@  @@@ @@@@@@@@@@@@@@@@@ @@@@@@@@@@@  @@ @@@ @@@@@@ @@@ @@@  @ @@@@@@@@@@@
@@@ @@@@@@@@@@@@  @@@@@  @@@ @ @@  @@@@@@@@ @@@@@@ @@@@@ @ @@@@  @@@@@@ @@@@@@@@@@@@@@@@ @@@@@@@@@@@
@@@@@@@@@@@@@@@ @@   @@@@  @@@@@@@@ @@@@ @@@@@@  @@@@@ @ @@@@@ @@ @ @ @@@@ @ @@@@@@@@@@ @@@ @@@@@@@@
@@@@@@@@@@@  @@@@@@@@@@@@   @@@@@@@@@ @@@@@@@@@@@@@ @@@@@ @@@@@@@@@@@@@@@@@@@@@@  @@@@@@@@ @@@@@@ @@
@@ @  @@@ @ @@@ @@@@ @@@@@@     @@@ @@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@ @@@@@@@@@@@
@@@@@@@ @@@@  @@@@@@ @@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@ @@@@  @@@ @@ @@ @@@@@@ @@@@@@@  @@@@@@@@@@@@@@@
@@@ @@@@@@   @@@ @@@@@@@@@@@  @  @   @@@ @ @@@ @@@@@@@@@@@@@@@@ @@@@@ @@  @@@@@@@@@@@@@@@@@@@ @@@@@@
@@@@ @@@@@@@ @@@@@@ @ @@@     @@@@@@ @@@ @@@@@@@@@@@@@@@@@@ @ @@ @@@@@@@   @@@@@  @@@@@@@@ @@ @@ @@ 
@@@@@@@@    @@@@@@@@@@@@@@  @   @@@@@@ @@@@@ @@@@@@@@@@@@@@@ @@@@ @@@@@ @@@@@@@@@@@@@@@@@ @@@@@@@@@@
@ @@@@@@@@@  @@@ @@@@@  @@@@@       @@@@@@@@@@ @@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@ @ @@
@@@@@@@@@@@@@   @@@@ @@@@@@@     @@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@ @@ @@@@@@@@@@@ @@@@@@@@@@@@@@ 
@@@@@@@@@   @ @@@@@@@@@@ @   @@@  @ @@  @@@@@@@ @@@  @@@@@@@@ @@@@@@@@ @@@ @@@@ @@@@@@@@ @@@@ @@@@@@
@@@@ @@@@@@@@@@@ @@@@@@@@@@@@  @@@  @ @@@@@@@ @@@@ @@ @ @@@@@@@@@ @@@@ @@@@@@@@@@@@@@@@@@@@@@ @  @@@
@@@@@@@@@ @   @ @ @@ @@@@@@@ @   @ @ @@@  @@@@@ @@@@@@@@@@@ @@ @ @@  @@ @@@@  @@@@@@@@@@@@@@@@ @@@@@
@@@@@@@@ @@@@@@@@@@@@@@@ @@@@  @@  @@@ @@@@ @ @@ @@   @@@@@@ @@ @@  @ @@  @@ @@@@@@@@@@@@@@@@@@@@@@@
@@@@@@ @@@@@   @  @@  @@@@@@ @@@    @ @@@@@ @        @@ @@@@@@@@@ @  @   @@@@ @@@@@@@@@@@@@@ @@@@@@ 
@@@@  @@@@@@@@@ @  @   @@ @@     @  @@@@@  @@         @   @  @@@ @ @@ @@@ @  @  @@@ @@@@   @@@ @ @@@
@@@ @@@@@@@ @@  @@@@@@@@@@@ @@@@  @@@  @@@@  @@  @@        @  @@@@@    @    @@ @@@@@@  @@@@   @@@@@@
@@@@@@@ @@@   @@@@@    @@@   @ @@ @@@@   @@@@     @@@@     @@  @@@   @@@  @ @@ @ @ @@@@@   @@  @@@@@
@@@@@@@@@@ @ @@@  @@@@@@@@@ @@@@@@@@@  @ @@@@@@ @@@@@@  @ @    @@@   @  @    @ @@@@ @@ @@@@@@@@@ @ @
@@  @@@@   @@@@@   @@@@@@@  @@@@     @@  @@@@@@@@@@@@@  @@@  @@@  @@@@@@@ @     @@@ @ @@@@@@@@@@  @ 
@@@@@@@@@ @@     @@ @@@@@@@@    @        @@   @@@@@@@ @@@@@  @@@ @@@@@ @@ @@ @@@@  @ @@@@@@@@@@  @@@
@@ @@@@@@ @ @ @@ @   @@ @@@@ @@     @@@@ @@@@@@ @@ @@@@@ @@@@@@@@@ @@@  @@@@ @@@ @@ @@@ @@@@     @ @
 @@@@ @@@@@    @ @@@  @@@@@@@  @@ @@@@ @@@@@@@@@@@@@@@@@ @@@@@@@@ @@  @@@ @  @@@ @@@@@@@@@@@@@@@    
@@@@@@ @@@@@@  @@@   @@ @@  @ @@@@ @@@@@ @ @@  @@@@@@@@@@@ @  @@@ @ @@@ @@   @ @@@ @ @@  @@ @ @ @   
@@@@@@@@ @@@@@@@ @@@@@   @@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@ @@@ @@  @@@@@@@@@@@@@@@@@@@@@@@@ @  @   @
@@@@@@ @ @@@@@@@@@@@  @ @  @@@@@ @ @@ @@ @@@@@@@@ @@@@@@@@  @@@ @ @ @@@ @@  @@@@@@  @@ @@@ @@    @  
 @@@@@@@@@@@ @@@@@@@@@    @@@@@@@@@@@ @@ @@@@@@@@@@@@ @@@@@@@@ @ @@@@  @@@@@ @@@@@@@@@@@@@@@@ @   @ 
@ @@@@ @ @@@@@ @@@@@ @    @@@@@@@@@@@ @@@ @@@@@@ @@@@ @@@@@@@@@@@     @@@@@ @@@ @@@ @@@@@ @@@ @  @@@
@@@@ @@@@@@@@@@@@@@@ @@@@ @@@@@@@@@@ @@@@@@@@@@@@ @ @@@@@@@@@@@@@@    @ @@ @@@@@@@@@@@@@@@@@@@@   @ 
 @@@@@@@@@@@@ @@ @@@@@@@@@ @@@@@@@@@@@@ @@@@@   @@@ @@ @@@@@ @@@@@@@@@@ @@@@@@@@@@@@@@@@@@ @@@ @    
@@@@ @@@@@@ @@@ @@@@@@@@ @@@@@    @@@@@ @ @@@@ @@@  @@@ @@@@@@@@@@@ @@@ @ @@@@@@@ @@@@@@@@@@@@ @@  @
@@@@@@@@@@@@@@@@@@ @@@@@@@@@  @@@@@@@ @@@ @@ @@@@@@@@@@@@@@@@@@@@@   @@@  @@@@@ @@ @   @@@@ @@@@    
@@ @@@@ @@@@@@@@@@@@@@@@@@@@@ @@@ @ @@@@@@@@@@@@@@@   @@@@@@  @@@ @@@@ @@@@@ @@@@@@@@@ @@  @ @@@ @ @
@@@@ @@@@@@@ @@@@@@@@@@@ @@  @@@@@@@@@ @@@@ @@@@@@@@@@ @@@@@@@@ @ @@@ @@@@@  @@@ @@@@@ @@@@  @@ @@ @
@@@@@@@@ @@ @@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@    @@@ @@@@@@@@@@@@ @@@@@@@@@    @@ 
@@@ @@@@@@@@@ @@@@@@@@@@@@ @@@ @@@@ @@@@@@  @@@@@@@@@@ @@@ @@@@ @  @@@@@ @ @@@@ @@@@@@ @@@@ @     @ 
@ @@@@@@@@@@@@ @@@ @@ @@@@@ @@@@@@@@@ @ @@@@@@@@@@@@@@@ @@@@@@@      @@@@ @@@@@@ @@  @@ @@ @@ @@@@ @
@@@@@@@@@@@@ @@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@ @@@@@@@@@ @@@ @  @@@ @@@@@@@@@ @@@@@@@@@@@ @@@@ @@
 @@@@@ @@@@@@ @@ @@@@@@@  @ @@@ @@ @@@ @@@ @@@@@@  @@@@@@ @ @@@  @ @@@@@@ @@@@@ @@@@@@@@@@@ @ @@@@@ 
@@@@ @@@@ @ @@@@@@ @@@@ @ @@@@@@@@@@@@@@@@@@@ @@@@@@@@@ @@@@@@ @  @ @@@@@@@@@@@ @@@ @@ @@@@@   @@@@ 
@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@ @  @@@@@ @@@ @@ @ @@@@ @ @@@@@@  @@@ @@@@@ @@@ @@@@@@@@    @@@ @@@@
@@@@@ @@@ @@@@@@@ @@@@@@@@@@ @ @ @@@@  @@@@@@@@ @@@@@@@@@@@@@@ @@ @@ @@@ @@  @ @@@@@@ @@@@ @ @@@  @@
@ @@@@@@@@@ @@@@@@@@@@@@@ @@@@@ @@@@@@ @  @@@@@@@@@@@@@ @@@@@@@@@ @ @@@  @@ @ @@@@@@@@@@@@ @@ @ @@ @
@ @@@@@@ @@@@@@@@  @@@@@@@@@@@ @@@@@@@  @@@@@@@@ @ @@@@@@@@@@@@@@ @ @   @@@   @@@  @ @@@ @@@      @ 
 @@@@@@@@@ @  @@ @@ @@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@ @@@@@@ @  @@@ @ @@  @    @@@@  @@@ @
@@@@ @@@@@@@@@@@@@@ @@@@@@@@ @@@@@@@@@@@@@@@ @@@@@ @ @ @@@@ @@@ @@@@@@@ @ @@@@ @@@@@@@   @@@@@ @ @@ 
 @@@@@@@@@@ @@@@@@@@@@ @@  @@ @@@@@@@@@@@ @@@@@@@@@@@@@@@ @@ @@ @@@@@@@@ @@@@@ @@@@@@@    @ @ @@@@@@
@@ @@@@@@@ @@@ @@@@@@@@@@@ @@@@@@@@ @@@@@@@@@@@ @ @@@@@@@@ @@ @@@@@@ @@@     @ @@ @@ @ @ @ @ @  @ @@
@ @@@@@@@  @@@@@@@@@@@@@ @@@ @@@@@@ @@@@@@@ @@@@@@@ @@@@@@@@ @ @@@@@@@@@   @ @ @@@   @ @@@@@ @ @@ @ 
@ @@@@@@@@ @@@  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ @@@@@@@@@@@@@@@ @@   @@@@  @@@@@@@@@@  @@@@
@@@@@ @ @@@@     @@ @@@@@ @@@@@@ @@@ @  @@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@ @@@@ @ @@@@@@@@@@ @@ @@@@@@ 
 @@@@@@@@@@@    @@@ @@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@ @@@ @@@@@@@@@@@@@@ @@ @@@   @@@  @@ @@@ @@@@@@@@
 @@ @ @ @@@@ @  @@@ @   @@ @@@@@@@@@@@@@@@ @@@@@@@@@@@@ @@@@@@@@@  @@@@@@    @@@   @@@@@ @@@@@@@@@@@
@@@@@@@@@@@ @   @@@@@@@@@@@@ @@@@@@@@@@@@@ @@@@@@@@@ @@@@@@@@@@ @@@@@@ @   @ @@@@@ @@@@ @ @@@@ @ @@ 
@@@@@@@@@@@       @@@@@@@@@@@@@@  @@@@@@  @@@ @@@@@@@@@@@@@  @@  @@ @ @ @@@ @@@@@@@@@@@@@@@@@@@@@@@@
@@@ @@@@@@          @@@ @ @@@@@ @@@@@@@@@@@@@@@@@@@@  @@ @@@@@@ @@     @ @@@@  @@@@@@@@@@@@ @@@@ @@@
@@@ @@@@@@       @ @@@@@@@@@@@@@@@@@@    @@@@@@ @@@@@@@@ @@@@@@@@@@@@@@     @ @ @@@ @@@@@@@@@@@@@@ @
@@@@ @ @@@   @ @@  @@@@  @@@@  @@@@@@@  @@ @@@@@ @@@@ @@@@@@@@ @@@@ @@  @@  @@@@@@@@@@@ @@@@@@@@@@@ 
@@@@@@@@@ @    @ @@@@@@@@@ @@@@@@@@@@@ @@@@@@@@ @@@@@ @@@@@ @@@@@   @@  @ @@  @ @@@@@@@@@@@@@@ @@@@@
@@ @ @@@@  @@@@@@ @ @@@ @ @@ @@@@@@@@@@@@@@  @ @ @@@@@@@@@@ @@  @@@@@ @@@@ @  @ @@@@@ @  @@@@@@@@@@@
@ @  @@@@@@  @@@@@ @@@@   @@ @@@@ @ @@@@ @@ @@@ @@@ @@  @@@@ @@@@ @@@ @ @@@@@@@@@@  @@@@@@ @@@@ @@@@
@@@@@@@@@@@@ @ @@@@@   @@@  @@@ @@@@@@ @@ @@ @@@@@@@@@ @ @@@@@  @@  @@ @   @  @@@@ @@@@@@@ @@@ @ @@@
@@@@@@@ @@@@@@@@@@@@@@@ @@@@@ @   @ @@  @@ @  @@@@@@@@@  @ @@@ @@@@  @@ @ @@ @@@  @@@@@@@ @@@@@@@@@@
@@ @@@@@@@@@  @  @@@@@ @@@@@  @@@@ @ @@ @@@@@    @ @@@ @ @@ @ @ @  @@@ @@@@@@@   @@@@@@@@@@ @@@@ @@@
@@@@@@@ @@@@@@@@ @@ @@@@@@@  @@@@@    @@@@@@@ @@@ @@   @@@@@@ @@@@@  @ @ @   @  @@ @@@@@@ @ @@@@@@ @
  @@@@@@@@@  @@  @@@@@ @@   @@@ @@@ @ @@@ @ @@@@@@@@@@@@@@@@@  @@@   @ @@@@@@@@@@@@@@@@@@@@ @@@@@ @@
@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@ @@@ @ @@@@@@@@ @ @ @ @ @@@@@@@@@@@@@@@@
@@@@@@@@@@ @ @@  @ @@@@@@@@ @@@ @@@@@ @ @@@@@@@@@@@@ @@@@@@@  @@ @ @ @@@@ @ @@@@@ @@  @ @@@@@@@@@@@@
@@@ @@@ @@@@@@@@@@@@@@@@ @ @@@@@@@@@@ @@@@@@@@ @@   @@@ @@@@ @@  @@ @  @@@ @@@@@@@@@ @@@@@@@@@@@@@@@
@@@@@@@@@@@@ @ @@@@@@@ @@@@@ @@ @@@ @@@@@@@ @@@@@ @@  @@@@@@@ @    @@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@ @
@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@  @@@@@@@@@@@@@@@@@@@@ @@ @@@@@@ @   @  @@@@@@ @@@@@@@ @@@@@@@@@ @@@@@
@@@@@@@@@@ @ @@@@  @ @@@@@@ @@@@@@@@@@@@@@@ @@ @@@@@ @@@@ @@@ @@@  @@ @@ @@@@ @@  @@@@ @@@@@@@@@@@@@
@@@  @@@@@@@@@@@@@@@@ @ @  @@@@@  @@@@@@ @@@@@@@@@@@@ @@@@@@   @@@   @@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@
@@@@@@@@@@@@ @@@@@@  @@@@@@    @@@@ @@@@@@@@@@@@@@@@@@ @@@@      @ @@@@@@@@@ @@@@@@@@@ @@@@ @@@@@@@@
@@@@@@@@@@  @@@@ @@ @@@@@@@@  @@ @@@@ @@ @@@@ @@@@@@@@@@ @@@@@  @@@@ @@@@@@@@ @@@@@@ @@ @@@@@@@ @@@@
  @@@@@@@ @@@@@@@@@@@ @@@@@ @@@ @@@@@  @@@@@@@@@@@@@@@@@@@@@@     @@ @@@@@@@@@@@@ @ @@@@@@@@@@@@ @@@
@@@@@@@@@@@@@@@@@@ @@@@@@@ @@@@@@@@@@@@@ @ @ @@@@@@@@@@@@@@@@@  @@@@ @@@@ @@@@ @@@@@@@@@@@@@@@ @@@@@
@@@ @@@ @@@@@@@@ @@@@@@@@@@@@@@@@@@@@ @ @@@@@@@ @ @@@@@@@@@ @@    @@@@ @@@@@@@@@@@@@@@@@@@  @@@@@@ @
@@@@ @@@ @@@@@@@@@@ @@@@@@@@@@  @@@@@ @@@@@@ @@@ @@@@@@@@@@@@@ @@@ @@@@  @@ @@@  @@ @@@@@@@@@@@@@@@@
@@@@@@@@@@@ @@ @@ @@@ @@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@ @@@@@@@@@@@@@@@ @@@@@@@@@@ @@@@@@@@@ 
@@@@@ @ @ @@@@@ @@@@@@@@@@@@@@ @@@@@  @@@@@@@@@@@@@ @@ @@@@@@@@    @@ @ @ @  @@@@@@@@@@@@@@@@@@ @@@@
@@@@ @@@@ @@@@@@@ @@ @@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@ @@@ @@@@@@@@    @@@@@@@@@@ @@@@ @ @@@@@@@@ @@ @
@@@@@@@@@@@@@@  @@@@@@@@@@@ @@@@@ @@@@@@@@@@@@@@@@@@ @@@@@@ @@@@@      @@@@@@@@@ @ @@ @@@@@@@@@@@@@ 
@@@@ @@@@ @@@ @@@ @@@@@@@@@@@@@@@@@@@ @@@@@  @@@@@@@@ @@@@@@  @@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@ @@@  
@@ @@  @   @ @@@@  @@@ @ @@@@@@@@@@ @@ @@@@@ @@@@@@@@@@  @@@@@@@@ @  @@@@@@@@@@ @@@@@  @@@@@@ @@@@@ 
@ @@@@ @@@@@@@@@@@@@@@@ @@@@@ @@@@@@ @ @@@@@@@ @@@@@@@@@@@@@@@ @@@@@   @@@ @@  @@@@@@@@@@@@@@@@ @@@ 
@@ @@@@@@@@@@@@@ @@ @@@@  @@@@@@@@@ @@@ @ @@@@@@@ @@ @@@@ @@@@@@  @@   @@@@@@@  @@@@ @@ @@@@@@@@@@@ 
@@@ @@@@@@@@@@@@ @@@@ @@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@
@@ @@@@@@@ @@@@ @@@ @@@@@@@@@  @@ @  @@@@@  @@@@@@@ @@@@@@  @ @@@ @@@@@@@  @@@@@@@@@ @@@@@ @@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@   @@@@@@ @@@ @ @@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@ @@ @@@@@@@@@@@ @ @@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@ @@@@@@@@@ @@ @@@@@ @@@@@ @@@@ @@@@@ @@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

grader:

#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <cmath>
#include <climits>
#include <cstring>
#include <map>
#include <vector>
#include <ctime>
using namespace std;
int mp[105][105];
int pos[505][2];
inline int pw (int a) {return a*a;}
inline double dis (int a, int b, int c, int d) {return sqrt(pw(a-c)+pw(b-d));}
double disa[505][505];
inline int getInt () {
    int ret = 0; char ch;
    while((ch = getchar()) < '0' || ch > '9') ;
    ret = ch-'0';
    while((ch = getchar()) >= '0' && ch <= '9') ret = ret*10+(ch-'0');
    return ret;
}
void gmark (const char*msg, int mark) {
	puts(msg);
	printf("your score: %d\n", mark);
	exit(mark);
}
const char g[100][101] = {
"@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@ @@@@  @@@@@@@@ @@@@@ @@@@@@ @@@@",
"@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@ @@@@@@@@@@ @@@@ @ @@@@@@ @ @@@ @ @@@@@ @@@@@ @@@@@@@@@@ @",
"@@@@@@@@@@@ @@ @@ @@  @@@@ @@@@@@ @@@@@@@@@@@@ @@@ @@@ @ @@@@@ @ @@@@@@@@@@ @ @@@@@@@@@@@ @@ @@@@@@ ",
"@@@@@@  @@@@@@@@@@@@@@@@@@@@@@@@@@@  @@@@ @@@@ @@@@@@@@@@@@@@@@ @ @@@@@@@@ @ @@@@@ @@ @@@@@@@@ @@@@@",
"@@@@@@@@@@@ @ @@@@@   @@@ @@@@@@@@@@@@@@ @@@@ @@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@ @@@@@ @@@ @@@@@ @",
"@@@@@@@@@@@@@ @@@@@@@  @@@@@@@@@@@@@@@@@@@@@@ @@@@@ @ @@@@@@ @@@ @  @@ @@@@@@@  @@  @@@@@@@@@@@@@@@@",
"@@@@ @@@@@@@@@@ @@@@@@@@@@ @@@ @@@@@ @@@@@@  @ @@@ @@ @@@@@@@@@ @@ @@ @@ @@ @@@@@@ @@ @@@@@@@@@@@ @@",
" @@  @@@@@@@@ @@  @  @@ @@@  @@@ @@@@@@@@@@@@@@@@@ @@@@@@@@@@@  @@ @@@ @@@@@@ @@@ @@@  @ @@@@@@@@@@@",
"@@@ @@@@@@@@@@@@  @@@@@  @@@ @ @@  @@@@@@@@ @@@@@@ @@@@@ @ @@@@  @@@@@@ @@@@@@@@@@@@@@@@ @@@@@@@@@@@",
"@@@@@@@@@@@@@@@ @@   @@@@  @@@@@@@@ @@@@ @@@@@@  @@@@@ @ @@@@@ @@ @ @ @@@@ @ @@@@@@@@@@ @@@ @@@@@@@@",
"@@@@@@@@@@@  @@@@@@@@@@@@   @@@@@@@@@ @@@@@@@@@@@@@ @@@@@ @@@@@@@@@@@@@@@@@@@@@@  @@@@@@@@ @@@@@@ @@",
"@@ @  @@@ @ @@@ @@@@ @@@@@@     @@@ @@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@ @@@@@@@@@@@",
"@@@@@@@ @@@@  @@@@@@ @@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@ @@@@  @@@ @@ @@ @@@@@@ @@@@@@@  @@@@@@@@@@@@@@@",
"@@@ @@@@@@   @@@ @@@@@@@@@@@  @  @   @@@ @ @@@ @@@@@@@@@@@@@@@@ @@@@@ @@  @@@@@@@@@@@@@@@@@@@ @@@@@@",
"@@@@ @@@@@@@ @@@@@@ @ @@@     @@@@@@ @@@ @@@@@@@@@@@@@@@@@@ @ @@ @@@@@@@   @@@@@  @@@@@@@@ @@ @@ @@ ",
"@@@@@@@@    @@@@@@@@@@@@@@  @   @@@@@@ @@@@@ @@@@@@@@@@@@@@@ @@@@ @@@@@ @@@@@@@@@@@@@@@@@ @@@@@@@@@@",
"@ @@@@@@@@@  @@@ @@@@@  @@@@@       @@@@@@@@@@ @@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@ @ @@",
"@@@@@@@@@@@@@   @@@@ @@@@@@@     @@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@ @@ @@@@@@@@@@@ @@@@@@@@@@@@@@ ",
"@@@@@@@@@   @ @@@@@@@@@@ @   @@@  @ @@  @@@@@@@ @@@  @@@@@@@@ @@@@@@@@ @@@ @@@@ @@@@@@@@ @@@@ @@@@@@",
"@@@@ @@@@@@@@@@@ @@@@@@@@@@@@  @@@  @ @@@@@@@ @@@@ @@ @ @@@@@@@@@ @@@@ @@@@@@@@@@@@@@@@@@@@@@ @  @@@",
"@@@@@@@@@ @   @ @ @@ @@@@@@@ @   @ @ @@@  @@@@@ @@@@@@@@@@@ @@ @ @@  @@ @@@@  @@@@@@@@@@@@@@@@ @@@@@",
"@@@@@@@@ @@@@@@@@@@@@@@@ @@@@  @@  @@@ @@@@ @ @@ @@   @@@@@@ @@ @@  @ @@  @@ @@@@@@@@@@@@@@@@@@@@@@@",
"@@@@@@ @@@@@   @  @@  @@@@@@ @@@    @ @@@@@ @        @@ @@@@@@@@@ @  @   @@@@ @@@@@@@@@@@@@@ @@@@@@ ",
"@@@@  @@@@@@@@@ @  @   @@ @@     @  @@@@@  @@         @   @  @@@ @ @@ @@@ @  @  @@@ @@@@   @@@ @ @@@",
"@@@ @@@@@@@ @@  @@@@@@@@@@@ @@@@  @@@  @@@@  @@  @@        @  @@@@@    @    @@ @@@@@@  @@@@   @@@@@@",
"@@@@@@@ @@@   @@@@@    @@@   @ @@ @@@@   @@@@     @@@@     @@  @@@   @@@  @ @@ @ @ @@@@@   @@  @@@@@",
"@@@@@@@@@@ @ @@@  @@@@@@@@@ @@@@@@@@@  @ @@@@@@ @@@@@@  @ @    @@@   @  @    @ @@@@ @@ @@@@@@@@@ @ @",
"@@  @@@@   @@@@@   @@@@@@@  @@@@     @@  @@@@@@@@@@@@@  @@@  @@@  @@@@@@@ @     @@@ @ @@@@@@@@@@  @ ",
"@@@@@@@@@ @@     @@ @@@@@@@@    @        @@   @@@@@@@ @@@@@  @@@ @@@@@ @@ @@ @@@@  @ @@@@@@@@@@  @@@",
"@@ @@@@@@ @ @ @@ @   @@ @@@@ @@     @@@@ @@@@@@ @@ @@@@@ @@@@@@@@@ @@@  @@@@ @@@ @@ @@@ @@@@     @ @",
" @@@@ @@@@@    @ @@@  @@@@@@@  @@ @@@@ @@@@@@@@@@@@@@@@@ @@@@@@@@ @@  @@@ @  @@@ @@@@@@@@@@@@@@@    ",
"@@@@@@ @@@@@@  @@@   @@ @@  @ @@@@ @@@@@ @ @@  @@@@@@@@@@@ @  @@@ @ @@@ @@   @ @@@ @ @@  @@ @ @ @   ",
"@@@@@@@@ @@@@@@@ @@@@@   @@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@ @@@ @@  @@@@@@@@@@@@@@@@@@@@@@@@ @  @   @",
"@@@@@@ @ @@@@@@@@@@@  @ @  @@@@@ @ @@ @@ @@@@@@@@ @@@@@@@@  @@@ @ @ @@@ @@  @@@@@@  @@ @@@ @@    @  ",
" @@@@@@@@@@@ @@@@@@@@@    @@@@@@@@@@@ @@ @@@@@@@@@@@@ @@@@@@@@ @ @@@@  @@@@@ @@@@@@@@@@@@@@@@ @   @ ",
"@ @@@@ @ @@@@@ @@@@@ @    @@@@@@@@@@@ @@@ @@@@@@ @@@@ @@@@@@@@@@@     @@@@@ @@@ @@@ @@@@@ @@@ @  @@@",
"@@@@ @@@@@@@@@@@@@@@ @@@@ @@@@@@@@@@ @@@@@@@@@@@@ @ @@@@@@@@@@@@@@    @ @@ @@@@@@@@@@@@@@@@@@@@   @ ",
" @@@@@@@@@@@@ @@ @@@@@@@@@ @@@@@@@@@@@@ @@@@@   @@@ @@ @@@@@ @@@@@@@@@@ @@@@@@@@@@@@@@@@@@ @@@ @    ",
"@@@@ @@@@@@ @@@ @@@@@@@@ @@@@@    @@@@@ @ @@@@ @@@  @@@ @@@@@@@@@@@ @@@ @ @@@@@@@ @@@@@@@@@@@@ @@  @",
"@@@@@@@@@@@@@@@@@@ @@@@@@@@@  @@@@@@@ @@@ @@ @@@@@@@@@@@@@@@@@@@@@   @@@  @@@@@ @@ @   @@@@ @@@@    ",
"@@ @@@@ @@@@@@@@@@@@@@@@@@@@@ @@@ @ @@@@@@@@@@@@@@@   @@@@@@  @@@ @@@@ @@@@@ @@@@@@@@@ @@  @ @@@ @ @",
"@@@@ @@@@@@@ @@@@@@@@@@@ @@  @@@@@@@@@ @@@@ @@@@@@@@@@ @@@@@@@@ @ @@@ @@@@@  @@@ @@@@@ @@@@  @@ @@ @",
"@@@@@@@@ @@ @@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@    @@@ @@@@@@@@@@@@ @@@@@@@@@    @@ ",
"@@@ @@@@@@@@@ @@@@@@@@@@@@ @@@ @@@@ @@@@@@  @@@@@@@@@@ @@@ @@@@ @  @@@@@ @ @@@@ @@@@@@ @@@@ @     @ ",
"@ @@@@@@@@@@@@ @@@ @@ @@@@@ @@@@@@@@@ @ @@@@@@@@@@@@@@@ @@@@@@@      @@@@ @@@@@@ @@  @@ @@ @@ @@@@ @",
"@@@@@@@@@@@@ @@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@ @@@@@@@@@ @@@ @  @@@ @@@@@@@@@ @@@@@@@@@@@ @@@@ @@",
" @@@@@ @@@@@@ @@ @@@@@@@  @ @@@ @@ @@@ @@@ @@@@@@  @@@@@@ @ @@@  @ @@@@@@ @@@@@ @@@@@@@@@@@ @ @@@@@ ",
"@@@@ @@@@ @ @@@@@@ @@@@ @ @@@@@@@@@@@@@@@@@@@ @@@@@@@@@ @@@@@@ @  @ @@@@@@@@@@@ @@@ @@ @@@@@   @@@@ ",
"@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@ @  @@@@@ @@@ @@ @ @@@@ @ @@@@@@  @@@ @@@@@ @@@ @@@@@@@@    @@@ @@@@",
"@@@@@ @@@ @@@@@@@ @@@@@@@@@@ @ @ @@@@  @@@@@@@@ @@@@@@@@@@@@@@ @@ @@ @@@ @@  @ @@@@@@ @@@@ @ @@@  @@",
"@ @@@@@@@@@ @@@@@@@@@@@@@ @@@@@ @@@@@@ @  @@@@@@@@@@@@@ @@@@@@@@@ @ @@@  @@ @ @@@@@@@@@@@@ @@ @ @@ @",
"@ @@@@@@ @@@@@@@@  @@@@@@@@@@@ @@@@@@@  @@@@@@@@ @ @@@@@@@@@@@@@@ @ @   @@@   @@@  @ @@@ @@@      @ ",
" @@@@@@@@@ @  @@ @@ @@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@ @@@@@@ @  @@@ @ @@  @    @@@@  @@@ @",
"@@@@ @@@@@@@@@@@@@@ @@@@@@@@ @@@@@@@@@@@@@@@ @@@@@ @ @ @@@@ @@@ @@@@@@@ @ @@@@ @@@@@@@   @@@@@ @ @@ ",
" @@@@@@@@@@ @@@@@@@@@@ @@  @@ @@@@@@@@@@@ @@@@@@@@@@@@@@@ @@ @@ @@@@@@@@ @@@@@ @@@@@@@    @ @ @@@@@@",
"@@ @@@@@@@ @@@ @@@@@@@@@@@ @@@@@@@@ @@@@@@@@@@@ @ @@@@@@@@ @@ @@@@@@ @@@     @ @@ @@ @ @ @ @ @  @ @@",
"@ @@@@@@@  @@@@@@@@@@@@@ @@@ @@@@@@ @@@@@@@ @@@@@@@ @@@@@@@@ @ @@@@@@@@@   @ @ @@@   @ @@@@@ @ @@ @ ",
"@ @@@@@@@@ @@@  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ @@@@@@@@@@@@@@@ @@   @@@@  @@@@@@@@@@  @@@@",
"@@@@@ @ @@@@     @@ @@@@@ @@@@@@ @@@ @  @@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@ @@@@ @ @@@@@@@@@@ @@ @@@@@@ ",
" @@@@@@@@@@@    @@@ @@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@ @@@ @@@@@@@@@@@@@@ @@ @@@   @@@  @@ @@@ @@@@@@@@",
" @@ @ @ @@@@ @  @@@ @   @@ @@@@@@@@@@@@@@@ @@@@@@@@@@@@ @@@@@@@@@  @@@@@@    @@@   @@@@@ @@@@@@@@@@@",
"@@@@@@@@@@@ @   @@@@@@@@@@@@ @@@@@@@@@@@@@ @@@@@@@@@ @@@@@@@@@@ @@@@@@ @   @ @@@@@ @@@@ @ @@@@ @ @@ ",
"@@@@@@@@@@@       @@@@@@@@@@@@@@  @@@@@@  @@@ @@@@@@@@@@@@@  @@  @@ @ @ @@@ @@@@@@@@@@@@@@@@@@@@@@@@",
"@@@ @@@@@@          @@@ @ @@@@@ @@@@@@@@@@@@@@@@@@@@  @@ @@@@@@ @@     @ @@@@  @@@@@@@@@@@@ @@@@ @@@",
"@@@ @@@@@@       @ @@@@@@@@@@@@@@@@@@    @@@@@@ @@@@@@@@ @@@@@@@@@@@@@@     @ @ @@@ @@@@@@@@@@@@@@ @",
"@@@@ @ @@@   @ @@  @@@@  @@@@  @@@@@@@  @@ @@@@@ @@@@ @@@@@@@@ @@@@ @@  @@  @@@@@@@@@@@ @@@@@@@@@@@ ",
"@@@@@@@@@ @    @ @@@@@@@@@ @@@@@@@@@@@ @@@@@@@@ @@@@@ @@@@@ @@@@@   @@  @ @@  @ @@@@@@@@@@@@@@ @@@@@",
"@@ @ @@@@  @@@@@@ @ @@@ @ @@ @@@@@@@@@@@@@@  @ @ @@@@@@@@@@ @@  @@@@@ @@@@ @  @ @@@@@ @  @@@@@@@@@@@",
"@ @  @@@@@@  @@@@@ @@@@   @@ @@@@ @ @@@@ @@ @@@ @@@ @@  @@@@ @@@@ @@@ @ @@@@@@@@@@  @@@@@@ @@@@ @@@@",
"@@@@@@@@@@@@ @ @@@@@   @@@  @@@ @@@@@@ @@ @@ @@@@@@@@@ @ @@@@@  @@  @@ @   @  @@@@ @@@@@@@ @@@ @ @@@",
"@@@@@@@ @@@@@@@@@@@@@@@ @@@@@ @   @ @@  @@ @  @@@@@@@@@  @ @@@ @@@@  @@ @ @@ @@@  @@@@@@@ @@@@@@@@@@",
"@@ @@@@@@@@@  @  @@@@@ @@@@@  @@@@ @ @@ @@@@@    @ @@@ @ @@ @ @ @  @@@ @@@@@@@   @@@@@@@@@@ @@@@ @@@",
"@@@@@@@ @@@@@@@@ @@ @@@@@@@  @@@@@    @@@@@@@ @@@ @@   @@@@@@ @@@@@  @ @ @   @  @@ @@@@@@ @ @@@@@@ @",
"  @@@@@@@@@  @@  @@@@@ @@   @@@ @@@ @ @@@ @ @@@@@@@@@@@@@@@@@  @@@   @ @@@@@@@@@@@@@@@@@@@@ @@@@@ @@",
"@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@ @@@ @ @@@@@@@@ @ @ @ @ @@@@@@@@@@@@@@@@",
"@@@@@@@@@@ @ @@  @ @@@@@@@@ @@@ @@@@@ @ @@@@@@@@@@@@ @@@@@@@  @@ @ @ @@@@ @ @@@@@ @@  @ @@@@@@@@@@@@",
"@@@ @@@ @@@@@@@@@@@@@@@@ @ @@@@@@@@@@ @@@@@@@@ @@   @@@ @@@@ @@  @@ @  @@@ @@@@@@@@@ @@@@@@@@@@@@@@@",
"@@@@@@@@@@@@ @ @@@@@@@ @@@@@ @@ @@@ @@@@@@@ @@@@@ @@  @@@@@@@ @    @@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@ @",
"@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@  @@@@@@@@@@@@@@@@@@@@ @@ @@@@@@ @   @  @@@@@@ @@@@@@@ @@@@@@@@@ @@@@@",
"@@@@@@@@@@ @ @@@@  @ @@@@@@ @@@@@@@@@@@@@@@ @@ @@@@@ @@@@ @@@ @@@  @@ @@ @@@@ @@  @@@@ @@@@@@@@@@@@@",
"@@@  @@@@@@@@@@@@@@@@ @ @  @@@@@  @@@@@@ @@@@@@@@@@@@ @@@@@@   @@@   @@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@",
"@@@@@@@@@@@@ @@@@@@  @@@@@@    @@@@ @@@@@@@@@@@@@@@@@@ @@@@      @ @@@@@@@@@ @@@@@@@@@ @@@@ @@@@@@@@",
"@@@@@@@@@@  @@@@ @@ @@@@@@@@  @@ @@@@ @@ @@@@ @@@@@@@@@@ @@@@@  @@@@ @@@@@@@@ @@@@@@ @@ @@@@@@@ @@@@",
"  @@@@@@@ @@@@@@@@@@@ @@@@@ @@@ @@@@@  @@@@@@@@@@@@@@@@@@@@@@     @@ @@@@@@@@@@@@ @ @@@@@@@@@@@@ @@@",
"@@@@@@@@@@@@@@@@@@ @@@@@@@ @@@@@@@@@@@@@ @ @ @@@@@@@@@@@@@@@@@  @@@@ @@@@ @@@@ @@@@@@@@@@@@@@@ @@@@@",
"@@@ @@@ @@@@@@@@ @@@@@@@@@@@@@@@@@@@@ @ @@@@@@@ @ @@@@@@@@@ @@    @@@@ @@@@@@@@@@@@@@@@@@@  @@@@@@ @",
"@@@@ @@@ @@@@@@@@@@ @@@@@@@@@@  @@@@@ @@@@@@ @@@ @@@@@@@@@@@@@ @@@ @@@@  @@ @@@  @@ @@@@@@@@@@@@@@@@",
"@@@@@@@@@@@ @@ @@ @@@ @@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@ @@@@@@@@@@@@@@@ @@@@@@@@@@ @@@@@@@@@ ",
"@@@@@ @ @ @@@@@ @@@@@@@@@@@@@@ @@@@@  @@@@@@@@@@@@@ @@ @@@@@@@@    @@ @ @ @  @@@@@@@@@@@@@@@@@@ @@@@",
"@@@@ @@@@ @@@@@@@ @@ @@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@ @@@ @@@@@@@@    @@@@@@@@@@ @@@@ @ @@@@@@@@ @@ @",
"@@@@@@@@@@@@@@  @@@@@@@@@@@ @@@@@ @@@@@@@@@@@@@@@@@@ @@@@@@ @@@@@      @@@@@@@@@ @ @@ @@@@@@@@@@@@@ ",
"@@@@ @@@@ @@@ @@@ @@@@@@@@@@@@@@@@@@@ @@@@@  @@@@@@@@ @@@@@@  @@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@ @@@  ",
"@@ @@  @   @ @@@@  @@@ @ @@@@@@@@@@ @@ @@@@@ @@@@@@@@@@  @@@@@@@@ @  @@@@@@@@@@ @@@@@  @@@@@@ @@@@@ ",
"@ @@@@ @@@@@@@@@@@@@@@@ @@@@@ @@@@@@ @ @@@@@@@ @@@@@@@@@@@@@@@ @@@@@   @@@ @@  @@@@@@@@@@@@@@@@ @@@ ",
"@@ @@@@@@@@@@@@@ @@ @@@@  @@@@@@@@@ @@@ @ @@@@@@@ @@ @@@@ @@@@@@  @@   @@@@@@@  @@@@ @@ @@@@@@@@@@@ ",
"@@@ @@@@@@@@@@@@ @@@@ @@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@",
"@@ @@@@@@@ @@@@ @@@ @@@@@@@@@  @@ @  @@@@@  @@@@@@@ @@@@@@  @ @@@ @@@@@@@  @@@@@@@@@ @@@@@ @@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@   @@@@@@ @@@ @ @@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@ @@ @@@@@@@@@@@ @ @@@@",
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@ @@@@@@@@@ @@ @@@@@ @@@@@ @@@@ @@@@@ @@@@@@@@@@"
};
bool vis[505];
int main () {
	freopen("answer", "r", stdin);
    for(int a = 0; a<100; a++)
        for(int b = 0; b<100; b++) {
            char str[100];
            if(scanf("%s", str) != 1) gmark("the length of the ans is too short", 0);
            int len = strlen(str);
            for(int i = 0; i<len; i++)
                if(str[i] < '0' || str[i] > '9') gmark("Appear wrong char", 0);
            sscanf(str, "%d", &mp[a][b]);
            //printf("%d\n", mp[a][b]);
            if(mp[a][b]) {
                if(mp[a][b] > 500 || g[a][b] != ' ') gmark("Appear wrong key", 0);
                if(vis[mp[a][b]]) gmark("Appear the same key", 0);
                vis[mp[a][b]] = true;
                pos[mp[a][b]][0] = a, pos[mp[a][b]][1] = b;
            }
        }
    for(int i = 1; i<=500; i++)
        if(!vis[i]) gmark("There's key left", 0);
    for(int i = 1; i<=500; i++)
        for(int j = 1; j<=500; j++)
            disa[i][j] = dis(pos[i][0], pos[i][1], pos[j][0], pos[j][1]);
    freopen("P", "r", stdin);
    int lst = getInt(), x = 5000266, k;
    double cur = 0;
    while(x --) k = getInt(), cur += disa[k][lst], lst = k;
    printf("distance:%.2lf\n", cur);
    if(cur <= 43000000) gmark("full score", 100);
    else if(cur <= 50000000) gmark("high score", 100-(cur-43000000)/(50000000-43000000)*40);
    else if(cur <= 110000000) gmark("good", 60-(cur-50000000)/(110000000-50000000)*30);
    else if(cur <= 200000000) gmark("shou wan", 30-(cur-110000000)/(200000000-110000000)*29);
    else if(cur <= 250000000) gmark("qian dao", 1);
    else gmark("sorry,no score", 0);
}

至于P文件(18566KB)不太重要(在本题解中),所以不发了。。。

如果非要手测,可以自己随机生成5000267个数

 

simple_answer(实际知道格式就可以了):

  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 352   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 152   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 460   0   0   0   0   0   0   0   0   0   0   0   0  68   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 210   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0  37   0   0   0   0   0   0   0   0   0   0   0   0 117   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0  56   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0 453   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0  61   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 324   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 108   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0  49   0   0   0   0   0  94   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 135   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0  22   0   0   0   0   0   0   0   0   0 497   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0 481   6   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0  91   0   0   0  89   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 171   0   0   0   0   0   0   0   0   0   0   0   0   0 438   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 366   0   0   0   0 383   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0  20   0   0   0   0   0   0   0   0   0   0   0   0   0 141 462 449   0   0   0   0   0   0   0   0   0 360   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0  10   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0  75   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 124   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0 362   0   0   0   0   0   0 261   0   0   0   0   0   0   0   0   0   0 282   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 242   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0 406   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 322   0   0   0   0   0 439   0   0   0   0   0   0  38   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 198   0   0   0   0   0   0   0   0 184 175   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 482   0   0   0   0   0   0   0   0   0   0   0   0   0   0 381   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0  87   0   0 178 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 131   0   0   0   0   0   0   0   0   0   0   0   0   0  64   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 255 329   0   0   0 207  24   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 455   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 467   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 270   0   0   0   0   0   0   0   0   0   0   0   0   0 107   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0 356   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 377   0   0 206   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 315   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 426   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 319   0   0   0   0   0   0   0   0   0 111   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0 158   0 192   0   0   0 157   0   0 373   0   0   0   0   0   0   0 390   0   0 421   0   0  97   0   0   0   0   0 500   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 314   0   0   0 408   0   0   0   0  57   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 359   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0  46   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0  30 260   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 343   0   0   0 427   0   0 391   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0 204   0   0   0   0   0 193   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 405   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 433 103   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0  55   0   0   0   0   0   0   0   0   0   0   0   0  59   0 318 301   0   0   0   0   0   0   0   0 112 434   0   0 409   0   0   0   0   0   0 435  76   0   0   0  34 128   0   0   0 327 187   0   0   0 387   0   0   0   0   0   0   0 243   0   0   0   0   0   0   0   0   0   0 334   0   0   0   0   0   0   0   0   0   0   0   0 151   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0 444   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 488   0   0 114   0   0   0   0   0   0   0   0  17   0   0   0 328 222   0   0   0   0   0   0 457 443   0   0 446   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0 440   0   0   0   0   0   0   0   0   0 224 200   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 368 472   0   0   0   0 311   0   0   0   0   0   0   0   0   0 299   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 155   0   0   0   0   0   0   0   0   0   0 414  53   0   0   0  63   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0  16   0   0   0   0   0   0   0   0   0 379   0   0   0   0   0   0   0   0   0 274   0   0 153   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 395   0   0   0   0   0   0 230   0 344   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 308   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 316 216   0   0   0   0   0   0   0   0   0   0   0   0   0 144   0   0   0   0   0 160   0   0   0   0   0   0   0   0   0   0   0   0   0   0 258   0   0 413   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 437   0   0 430 
  0   0   0   0   0   0   0   0   0   0   0   0 256   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 393   0   0   0   0   0   0   0   0   0   0   0   0   0 253   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 218   0   0   0   0   0   0   0 417   0   0   0 382   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 442   0   0   0 371   0   0   0   0   0   0   0   0   0 492   0   0   0   0   0   0 213   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 432   0   0   0   0   0   0   0   0 428   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 272   0   0   0 109   0 254   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 476   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 411   0   0   0 345   0   0   0   0   0   0   0   0   0   0 305   0   0   0   0   0 317   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0  66   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 105   0   0   0   0   0 132   0   0 484   0   0   0   0   0   0   0   0   0 139 238   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 321   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0  85   0   0   0   0 347   0   0   0 
  0   0   0   0   0   0 264   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0  40   0 364 182   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 214   0   0   0   0   0   0   0   0 149   0   0   0   0   0   0   0   0   0   0   0 140   0   0   0   0   0   0   0   0 397   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0  29 188 156   0   0   0   0   0   0   0   0   0   0   0   0 295   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 281   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 292   0   0   0   0   0   0 266   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 333   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0 201   0   0   0   0   0   0   0   0   0   0   0   0   0   0 499 289 118   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0  93   0   0   0   0   0   0 403   0   0   0   0 239   0   0   0   0   0   0   0   0   0   0   0 215 275   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 133   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0 341   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 161 302   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 304   0   0   0   0   0   0   0  60   0   0   0   0   0   0 189   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 280   0   0   0   0 205 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 400   0   0 142   0   0   0   0   0 451   0   0   0   0   0   0  41   0   0   0   0 195   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 478   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 340   0   0   0   0   0   0   0   0 357   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 233   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 335   0   0   0 
  0   0  11   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 251   0   0   0   0   0   0   0 227   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 236   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 252   0   0   0   0   0   0   0   0   0   0   5   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 422   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 180   0   0   0   0 
  0   0   0   0   0   0   0   0 361   0   0   0   0   0   0   0   0   0   0   0   0   0   0 273   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 445   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 162   0   0   0   0   0   0   0   0 104   0   0   0   0   0   0  28   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0  33   0   0   0   0   0   0 190 129   0   0   0   0   0   0   0   0   0   0   0   0 286   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0 143   0   0   0   0   0   0   0   0   0   0   0   0 300   0   0   0   0   0   0  78   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0  19   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 229   0   0   0   0   0   0   0   0   0   0 228   0   0   0   0   0   0   0   0   0  86   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 268   0   0 412   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 183   0   0   0   0   0   0   0   0   0   0   0   0   0   0  12   0   0   0   0   0   0   0   0 259   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0  47 
  0   0   0   0   0   0   0   0   0  50   0   0   0   0   0   0   0   0 303   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 363   0   0   0   0   0   0 293   0   0   0   0   0   0 490   0   0   0   0   0 479 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0  23   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 197   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 348   0   0   0   0   0 147   0   0   0   0   0   0   0   0   0   0   0   0 250   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 232   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 262   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 235   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 185   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 101   0   0   0   0   0   0  62   0 332 485   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 407   0   0   0   0   0   0 338   0   0   0   0 464   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0 307   0   0   0   0   0   0 127   0   0   0   0   0   0   0   0 194   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0  26   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 174   0   0   0   0   0   0   0 376   0   0   0 386   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
 14   0   0   0   0   0   0   0   0   0   0   0 290   0   0   0   0   0   0 283   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 223   0   0   0   0   0   0   0   0   0   0   0   0   0   0 306   0 398 297   0   0   0   0   0   0   0   0   0  21   0 312   0 468  18   0   0   0   0  58   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 181   0 298   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0  36   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 137   0   0 263 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 271   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 245   0   0   0   0   0   0   0   0   0   0   0   2   0   0   0   0   0   0   0   0   0   0   0   0   0 310   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 202   0   0   0   0   0   0   0   0 401   0   0   0   0   0   0   0   0   0   0   0 370   0   0   0   0   0   0   0   0   0   0   0   0   0 130   0   0   0   0   0   0   0   0   0   0 336   0   0   0   0   0   0   0   0 450   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 120   0   0 
  0 176   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 246   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0  79   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 291   0   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0 165   0   0   0   0 420   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 110   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 320   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 209   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 115   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0 489   0   0   0   0   0   0   0   0   0   0   0 456   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 365   0   0   0   1   0   0   0   0   0   0   0   0   0   0   0   0   0   0 402   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
461   0   0 277   0   0   0   0   0   0   0   0   0   0   0 418   0   0   0   0   0   0   0   0   0   0 113   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 351   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 172   0   0   0   0   0 249 138  96   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   8   0   0   0   0   0   0   0   0   0   0 186   0   0   0   0   0   0   0   0   0   0   0   0 164   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0  13  43   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 424   0   0   0   0   0   0   0   0  83   0   0   0 354   0   0   0   0   0   0   0   0   0   0   0   0   0   0 211   0   0   0 313   0   0   0   0 220   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0 495   0   0   0   0   0   0   0   0   0 134   0   0   0   0  80   0   0   0   0 415   0 167   0   0   0   0   0 458   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 346   0 372   0   0   0   0   0   0   0 367   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0 491   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 168 326   0   0   0   0   0   0   9   0   0   0   0   0   0   0   0 102   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 309 116   0 429   0   0   0   0   0 349   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0 267   0   0   0   0   0   0   4  95   0   0   0   0   0  51   0   0   0   0 265   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 244   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0  72   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 154   0   0   0   0   0   0   0   0 394   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 419   0 454   0   0   0  88   0   0   0   0   0 126   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0  99   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 237   0 331   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 241   0 123   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 496   0   0   0   0   0   0 219   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0  84   0   0   0   0   0   0   0 145   0   0   0   0   0   0 159   0   0   0   0   0   0   0   0   0   0 150   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 269   0 163   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0 122   0 498   0   0   0   0   0  48   0   0   0   0   0  52   0   0   0   0 296   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 287   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 208   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 436   0 374   0   0   0   0   0 173   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 355   0   0   0   0   0   0   0 177   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   7   0   0   0   0   0   0   0   0   0 448   0   0   0   0   0   0   0   0   0 100   0   0   0   0   0   0  73   0   0   0   0   0   0   0   0   0 353   0   0   0   0   0 431   0   0 388   0  25   0   0   0 389   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0  39   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0   0 179   0   0   0   0   0   0   0   0   0   0   0  67   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 473   0   0   0   0  70   0   0   0   0   0   0   0   0   0   0   0   0 234   0   0 285   0  45   0   0   0   0   0   0 279   0   0 378   0   0   0   0   0   0  77   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0 486 231   0   0   0   0   0   0   0   0   0  81   0   0   0   0 480   0   0   0 288   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 385   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 474   0   0   0   0   0   0   0 493   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 191   0  69   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 170   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0  92   0   0   0   0   0   0   0   0   0   0 475   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 325   0   0   0   0   0   0   0   0   0   0   0 350   0   0   0   0   0   0   0   0 384   0   0   0   0   0   0   0   0   0   0   0 199   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 217   0   0   0   0   0   0   0   0   0   0   0   0   0   0  90   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 416   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 323   0   0 106   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 221   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   3   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0 121   0   0   0   0  42   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 257   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 225   0   0   0   0 169   0   0   0   0   0 247   0   0   0   0 447   0   0   0   0   0   0   0   0 423   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0  31   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 375  98   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 226   0 380   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 136  54   0   0   0   0   0   0   0   0   0   0   0 294   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 399   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 358   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 483   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 196   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 452 494   0 276   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 396   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 240   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0  44   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0  71   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 404   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 459   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 284   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 125   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0 463   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 337   0   0   0   0 441   0   0   0   0   0   0   0   0   0   0   0   0   0 466   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 487  82  74   0   0   0   0   0   0   0   0   0   0 465   0   0   0   0  32   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0 330   0   0   0   0 477   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 148   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 471   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0  65   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 410   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0  27   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 339   0   0   0   0   0   0   0   0   0   0   0 470   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0 166   0   0   0   0   0   0   0   0   0   0   0   0 212   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 146   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 278   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 369   0   0 392   0   0   0   0   0   0   0   0   0   0   0 248   0   0   0   0   0   0   0   0   0   0 119   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 425   0   0   0   0   0   0   0   0   0   0   0 203   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 469   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0  35   0   0   0   0   0 342   0   0   0   0   0   0   0   0   0   0  15   0   0   0   0   0   0   0   0   0   0 
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 

 

 

 

(实际上,本题的思路才是关键)

题解

考场上,看完题目,

果断写了一个小程序,用tong[i][j]表示i,j相邻的次数,排了个序

然后开始在simple_answer里Ctrl+F手动修改,把相邻次数最多的两个数靠得尽量近。

用了10min,手动修改了15组数据,测了一下,距离210,000,000+            /吐血

 

发现每次手动修改只会让距离减小500,000左右

像这样改下去得10分都难。

于是,开始想如何用程序来修改answer,

1个小时过去了

突然发现可以按一个数的出现次数排序,然后依次填进空位

然后开始肉眼观察空位的密度,

发现了三个比较好的区域(利用Dev-c++的缩放性质):

于是就想让这些排序后的数,“聚居”在这三个区域之一

 

先来看一号区域:

先将出现次数多数的放在空白较大的区域(如图中的三个红色小矩形)

然后在把不太重要的数放在外围。。。

结果发现这里的数不满500个。。。

然后扩大“居住区”:

经过各种操作(将矩形不断划分填空)

又过了一个小时

发现仍然只有44分。。。

于是我放弃了一号区

突然发现自己距离大的原因是区域太长了,然而编辑器在显示‘@’时,宽度比高度短

就造成了一种长宽比较均衡的错觉。。。

 

马上换二号区(行号22~66,列号54~100)

直接填入

测了一下47分    哇卡卡卡卡卡

然后再进行了类似于一号区的操作

然后49分了      2333333333

接下来,无论我怎么调参数,就是上不了50分,绝望

 

发现离考试结束只有50min了,连忙写了T1T2的暴力

 

最后10min,发现可以爬山(随机两个数,如果更优,就交换,否则再随机两个数,直到达到较优解)

可是已经晚了

 

后来,还是把爬山写完了(比较丑陋):

#include<cstdio>
#include<cstring>
#include<cmath>
#include<ctime>
#include<algorithm>
using namespace std;
int pos[505][2];
inline int pw (int a) {return a*a;}
inline double dis (int a, int b, int c, int d) {return sqrt(pw(a-c)+pw(b-d));}
double disa[505][505];
inline int gi()
{
	char c;int num=0,flg=1;
	while((c=getchar())<'0'||c>'9')if(c=='-')flg=-1;
	while(c>='0'&&c<='9'){num=num*10+c-48;c=getchar();}
	return flg==1?num:-num;
}
#define N 505
int tong[N];
struct node{
	int con,i;
}a[N];
bool cmp(node q,node w){return q.con>w.con;}
char c[105][105];
int ans[105][105];
int main()
{
	freopen("P", "r", stdin);
	int x,pre=0,i,j,k;
	while(~scanf("%d",&x)){
		if(pre!=x){
			a[pre].con++;a[x].con++;
			pre=x;
		}
	}
	for(i=1;i<=500;i++)a[i].i=i;
	sort(a+1,a+500+1,cmp);
	freopen("keyboard", "r", stdin);
	for(i=1;i<=100;i++)
		gets(c[i]+1);
	k=1;
	for(i=22;i<=66;i++){
		for(j=54;j<=100;j++){
			if(c[i][j]!='@'&&!ans[i][j]&&k<=500){
				ans[i][j]=a[k].i;
				k++;
			}
		}
	}
	freopen("CON","w",stdout);
	double cur,tmpcur;
	srand(time(0));
	for(i=22;i<=66;i++){
		for(j=54;j<=100;j++){
			if(ans[i][j]>0)
				pos[ans[i][j]][0]=i;
				pos[ans[i][j]][1]=j;
		}
	}
	for(i = 1; i<500; i++)
		for(j = i+1; j<=500; j++)
			disa[i][j] = disa[j][i] = dis(pos[i][0], pos[i][1], pos[j][0], pos[j][1]);
	int tmpa,tmpb,lst;
	freopen("P", "r", stdin);
	lst = gi();
	x = 5000266;
	cur = 0;
	while(x --)
		k = gi(), cur += disa[k][lst], lst = k;
	do{
		do{
			tmpa=rand()%500+1;
			do{tmpb=rand()%500+1;}while(tmpb==tmpa);
			swap(pos[tmpa][0],pos[tmpb][0]);
			swap(pos[tmpa][1],pos[tmpb][1]);
			for(j = 1; j<=500; j++)swap(disa[tmpa][j] , disa[tmpb][j]);
			for(j = 1; j<=500; j++)swap(disa[j][tmpa] , disa[j][tmpb]);
			freopen("P", "r", stdin);
			lst = gi();
			x = 5000266;
			tmpcur = 0;
			while(x --)
				k = gi(), tmpcur += disa[k][lst], lst = k;
			if(tmpcur>cur){
				swap(pos[tmpa][0],pos[tmpb][0]);
				swap(pos[tmpa][1],pos[tmpb][1]);
				for(j = 1; j<=500; j++)swap(disa[tmpa][j] , disa[tmpb][j]);
				for(j = 1; j<=500; j++)swap(disa[j][tmpa] , disa[j][tmpb]);
			}
		}while(tmpcur>cur);
		printf("distance:%.2lf\n", cur=tmpcur);
	}while(cur>43000000);
	freopen("my_answer5", "w", stdout);
	memset(ans,0,sizeof(ans));
	for(i=1;i<=500;i++)
		ans[pos[i][0]][pos[i][1]]=i;
	for(i=1;i<=100;i++){
		for(j=1;j<=100;j++)
			printf("%3d ",ans[i][j]);
		printf("\n");
	}
}

(运行用时25min,得分100)

 

爬山的辛酸经历

考后,因为比较懒,直接把grader复制过来进行记分,

发现每次都输出到answer,然后又读取answer,浪费了不少时间。

于是,干脆把两个程序合到一起,自己写了一个计算距离。

又发现每次随机都要读入两遍P文件,计算两次disa和cur,又浪费了不少时间。

然后就把两两距离和cur预处理出来,

随机交换两个位置只需要交换disa中的两行和两列以及它们的pos值(具体看程序)

读一次P文件,计算交换后的tmpcur,与之前的cur比大小。

如果更优就保留当前解,否则就还原。

 

我信心满满地码完代码,开始运行,然后就去吃饭了。

吃完饭回来,欸,怎么distance还在77,600,000左右盘旋,时大时小。。。

结果我每次随机的时候,disa都被memset了。。。(grader的残存片段)

又重新运行,distance终于乖乖递减,于是把它放在一边,开始刷莫队

过了25min左右,终于distance<43,000,000了,输出答案,兴高采烈地点开grader运行

46分!???wtf????

突然发现自己最后输出的ans没有更新,程序中只更新了pos           /吐血

马上把pos转进ans中,又苦逼地运行了25min,输出答案,异常紧张地点开grader运行

100!!!!松了一口气。。。

 

其他做法

Kyle在考场上用启发式贪心(对每一个空位都算一个估价函数,每个值都按出现次数排序,并以相邻点建边从内向外填),

而且只跑了5s就100分了%%%%%%Orz

然而出题人是用的遗传算法跑了一个晚上。。。

 

 

 

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值