atcoder#ABC135E. [ABC135E] Golf

[ABC135E] Golf

题目描述

無限に広がる二次元格子があります。ジャンボ高橋君はこの上でゴルフをすることにしました。

ボールははじめ原点 (0, 0) (0,\ 0) にあり、ゴールは格子点(座標がいずれも整数である点) (X, Y) (X,\ Y) です。ジャンボ高橋君は 1 1 打ごとに、次の操作を行えます。

  • その時点でボールがある点とのマンハッタン距離が K K であるような格子点を 1 1 つ選び、その点にボールを飛ばす。

ゴールと同じ座標にボールが来た時点でクリアとなり、それまでの打数がスコアとなります。ジャンボ高橋君はできるだけ少ないスコアでクリアしたいと思っています。

クリアが可能かどうか判定し、可能ならばスコアが最小となるボールの動かし方を 1 1 つ求めてください。

マンハッタン距離の説明2 2 つの座標 (x1, y1), (x2, y2) (x_1,\ y_1),\ (x_2,\ y_2) に対するマンハッタン距離は、x1x2+y1y2 |x_1-x_2|+|y_1-y_2| と定義されます。

输入格式

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

K K X X Y Y

输出格式

クリアが不可能な場合は -1 と出力してください。

クリアが可能な場合、スコアが最小となるボールの動かし方を次のように出力してください。

s s x1 x_1 y1 y_1 x2 x_2 y2 y_2 . . . . . . xs x_s ys y_s

ここで、s s はスコアの最小値です。また、(xi, yi) (x_i,\ y_i) i i 打目にボールを飛ばす先の座標とします。

题目大意

高桥将在无限的二维网格上打高尔夫球。

球最初位于原点(0,0)(0,0),目标是一个网格点(一个具有整数坐标的点)(X,Y)(X,Y)。在一次笔划中,高桥可以执行以下操作:

选择一个网格点,其曼哈顿距离球的当前位置为K,然后将球发送到该点。

当球到达球门时,比赛结束,比分将是目前为止的击球次数。高桥希望以尽可能低的比分结束比赛。

确定游戏是否可以结束。如果答案是肯定的,找一种方法把球带到可能得分最低的球门。

曼哈顿距离是:两个点($x11,y1)和(1)和(x22,y2)之间的曼哈顿距离定义为2)之间的曼哈顿距离定义为| x11-x2+2 |+| y11-y$2 |

按顺序输入:kk xx y y

输出格式: 如果游戏无法完成,请打印-1。

如果游戏可以完成,请按以下格式打印一种将球带到可能得分最低的目的地的方法:

s s x1 x_1 y1 y_1 x2 x_2 y2 y_2 . . . . . . xs x_s ys y_s

这里s是可能的最低分,而(xixiyiyi)是第二次击球后球的位置。

11
-1 2
3
7 4
2 10
-1 2
4600
52 149
-1
4
9 9
5
1 3
4 2
4 6
6 8
9 9

提示

制約

  • 入力はすべて整数
  • 1  K  109 1\ \leq\ K\ \leq\ 10^9
  • 105  X, Y  105 -10^5\ \leq\ X,\ Y\ \leq\ 10^5
  • (X, Y)  (0, 0) (X,\ Y)\ \neq\ (0,\ 0)

Sample Explanation 1

- (0, 0), (7, 4) (0,\ 0),\ (7,\ 4) のマンハッタン距離は 07+04=11 |0-7|+|0-4|=11 。 - (7, 4), (2, 10) (7,\ 4),\ (2,\ 10) のマンハッタン距離は 72+410=11 |7-2|+|4-10|=11 。 - (2, 10), (1, 2) (2,\ 10),\ (-1,\ 2) のマンハッタン距離は 2(1)+102=11 |2-(-1)|+|10-2|=11 。 以上より、このボールの動かし方は正しいです。 また、3 3 打より少なくクリアする方法は存在しません。