atcoder#ABC289F. [ABC289F] Teleporter Takahashi

[ABC289F] Teleporter Takahashi

配点 : 500500

問題文

xyxy 平面上に高橋くんがいます。 はじめ、高橋くんは点 (sx,sy)(s _ x,s _ y) にいます。 高橋くんは、点 (tx,ty)(t _ x,t _ y) に移動したいです。

xyxy 平面上に、長方形 $R\coloneqq\lbrace(x,y)\mid a-0.5\leq x\leq b+0.5,c-0.5\leq y\leq d+0.5\rbrace$ があります。 次の操作を考えます。

  • 長方形 RR に含まれる格子点 (x,y)(x,y) をひとつ選ぶ。 点 (x,y)(x,y) を中心に高橋くんはいまいる位置と対称な位置に瞬間移動する。

上の操作を 00 回以上 10610^6 回以下繰り返して、高橋くんが点 (tx,ty)(t _ x,t _ y) にいるようにできるか判定してください。 できる場合、高橋くんが点 (tx,ty)(t _ x,t _ y) に移動することができるような操作の列を 11 つ構成してください。

制約

  • 0sx,sy,tx,ty2×1050\leq s _ x,s _ y,t _ x,t _ y\leq2\times10^5
  • 0ab2×1050\leq a\leq b\leq2\times10^5
  • 0cd2×1050\leq c\leq d\leq2\times10^5
  • 入力はすべて整数

入力

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

sxs _ x sys _ y

txt _ x tyt _ y

aa bb cc dd

出力

11 行目には、操作を 00 回以上 10610^6 回以下繰り返して高橋くんが点 (tx,ty)(t _ x,t _ y) に到達できるなら Yes 、そうでなければ No と出力せよ。 11 行目で Yes と出力したとき、かつそのときに限り、あなたが構成した操作列の長さを dd としてさらに dd 行出力せよ(dd0d1060\leq d\leq10^6 を満たさなければならない)。 1+i1+i 行目 (1id)(1\leq i\leq d) には、ii 回目の操作で選んだ点 (x,y)R(x, y)\in R の座標をこの順に空白区切りで出力せよ。

1 2
7 8
7 9 0 3
Yes
7 0
9 3
7 1
8 1

例えば、次のようにして (1,2)(1,2) から (7,8)(7,8) へ移動することができます。

  • (7,0)(7,0) を選ぶ。高橋くんは (13,2)(13,-2) に移動する。
  • (9,3)(9,3) を選ぶ。高橋くんは (5,8)(5,8) に移動する。
  • (7,1)(7,1) を選ぶ。高橋くんは (9,6)(9,-6) に移動する。
  • (8,1)(8,1) を選ぶ。高橋くんは (7,8)(7,8) に移動する。

条件を満たす操作の列であれば何を出力しても正答となるので、例えば

Yes
7 3
9 0
7 2
9 1
8 1

と出力しても正答となります。

0 0
8 4
5 5 0 0
No

どのように操作しても点 (8,4)(8,4) に移動することはできません。

1 4
1 4
100 200 300 400
Yes

高橋くんがはじめから目的地にいる場合もあります。

22 2
16 7
14 30 11 14
No