#P1034. The dog task

The dog task

描述

猎人鲍勃 (Bob) 经常带着他的狗拉尔夫 (Ralph) 散步。鲍勃以恒定的速度走路,他的路线是一个多边形线(可能自相交),其顶点通过 $N$ 对整数 $(X_i, Y_i)$ 指定——它们是他的笛卡尔坐标。

拉尔夫自己走路,但始终在指定的 $N$ 个点与他的主人会合。狗在点 $(X_1, Y_1)$ 同时开始它的旅程,并在点 $(X_N, Y_N)$ 同时结束。

拉尔夫的速度可以高达他主人速度的两倍。当鲍勃在一个点和另一个点之间以直线行走时,活泼的狗会寻找树、灌木、堆丘和所有其他类型的有趣地方,这些地方通过 $M$ 对整数 $(X_j', Y_j')$ 指定。然而,在离开他的主人在点 $(X_i, Y_i)$ 后(其中 \$1 \leq i < N$),狗最多只能在再次会见主人之前访问一个有趣的地方。

您的任务是找到狗的路线,该路线符合上述要求,并允许他访问尽可能多的有趣地方。答案应当以一个多边形线的形式呈现,该线表示拉尔夫的路线。该路线的顶点应该是所有点 $(X_i, Y_i)$ 和最大数量的有趣地方 $(X_j', Y_j')$。后者最多可以被访问一次。

下面的图片展示了鲍勃的路线示例(实线)、一组有趣的地方(点)以及拉尔夫的最佳路线之一(虚线):

输入

输入的第一行包含两个整数 $N$ 和 $M$,以空格分隔(\$2 \leq N \leq 100$,\$0 \leq M \leq 100$)。第二行包含 $N$ 对整数 $X_1, Y_1, ..., X_N, Y_N$,以空格分隔,表示鲍勃的路线。第三行包含 $M$ 对整数 $X_1', Y_1',..., X_M', Y_M'$,以空格分隔,表示有趣的地方。

输入文件中的所有点都是不同的,且它们的坐标都是不超过 \$1000$ 的整数。

输出

输出的第一行应包含一个整数 $K$,表示最佳狗路线的顶点数量。第二行应包含 $K$ 对坐标 $X_1'', Y_1'', ..., X_K'', Y_K''$,以空格分隔,表示该路线。如果有多个这样的路线,您可以输出其中任意一个。

4 5 1 4 5 7 5 2 -2 4 -4 -2 3 9 1 2 -1 3 8 -3 
6 1 4 3 9 5 7 5 2 1 2 -2 4

来源

东北欧 1998