1 atcoder#ARC103B. [ABC111D] Robot Arms

[ABC111D] Robot Arms

配点 : 600600

問題文

すぬけ君の工場では,次のような特徴を持つ ロボットアーム を導入することになりました:

  • ロボットアームは,mm 個の m+1m+1 個の 関節 からなる.腕には 11, 22, ..., mm で,関節には 00, 11, ..., mm で番号が付けられている.腕 ii は関節 i1i-1 と関節 ii をつなぐ.腕 ii の長さは did_i である.
  • 各腕には,それぞれ独立に モード を指定することができる.モードは L, R, D, U のいずれかであり,腕のモードはその腕の向きを指定する.工場を座標平面とみなすと,関節 ii の座標 (xi,yi)(x_i, y_i) は次のように定まる:- (x0,y0)=(0,0)(x_0, y_0) = (0, 0)
    • ii のモードが L のとき,(xi,yi)=(xi1di,yi1)(x_i, y_i) = (x_{i-1} - d_{i}, y_{i-1})
    • ii のモードが R のとき,(xi,yi)=(xi1+di,yi1)(x_i, y_i) = (x_{i-1} + d_{i}, y_{i-1})
    • ii のモードが D のとき,(xi,yi)=(xi1,yi1di)(x_i, y_i) = (x_{i-1}, y_{i-1} - d_{i})
    • ii のモードが U のとき,(xi,yi)=(xi1,yi1+di)(x_i, y_i) = (x_{i-1}, y_{i-1} + d_{i})

すぬけ君は,腕のモードをうまく指定することにより,NN 個の点 (X1,Y1),(X2,Y2),...,(XN,YN)(X_1, Y_1), (X_2, Y_2), ..., (X_N, Y_N) のいずれにもロボットアームの関節 mm をちょうど一致させられるようなロボットアームを導入したいです. このようなことは可能でしょうか? 可能ならば,条件を満たすロボットアームおよび,各点 (Xj,Yj)(X_j, Y_j) にそのロボットアームの関節 mm を到達させるためのモードの指定方法を求めてください.

制約

  • 入力はすべて整数である
  • 1N10001 \leq N \leq 1000
  • 109Xi109-10^9 \leq X_i \leq 10^9
  • 109Yi109-10^9 \leq Y_i \leq 10^9

部分点

  • 300300 点分のテストケースでは,10Xi10-10 \leq X_i \leq 10 および 10Yi10-10 \leq Y_i \leq 10 が成り立つ.

入力

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

NN

X1X_1 Y1Y_1

X2X_2 Y2Y_2

::

XNX_N YNY_N

出力

条件を満たすことが可能なら,次の形式で出力せよ.不可能な場合は -1 を出力せよ.

mm

d1d_1 d2d_2 ...... dmd_m

w1w_1

w2w_2

::

wNw_N

mm および did_i はロボットアームの情報を表す.それぞれの変数の意味は問題文を参照せよ. ここで,1m401 \leq m \leq 40, 1di10121 \leq d_i \leq 10^{12} かつ m,dim, d_i はすべて整数でなければならない.

wjw_jmm 文字からなる文字列であり,点 (Xj,Yj)(X_j, Y_j) にロボットアームの関節 mm を到達させる方法を表す. wjw_jii 文字目は L, R, D, U のいずれかの文字であり,腕 ii のモードを表す.

3
-1 0
0 3
2 -1
2
1 2
RL
UU
DR

それぞれの (Xj,Yj)(X_j, Y_j) にロボットアームの関節 mm を到達させる方法において,各関節の位置は次のようになります.

  • (X1,Y1)=(1,0)(X_1, Y_1) = (-1, 0) に到達させる方法では,まず関節 00 の位置は (x0,y0)=(0,0)(x_0, y_0) = (0, 0) です.腕 11 のモードが R なので,関節 11 の位置は (x1,y1)=(1,0)(x_1, y_1) = (1, 0) です.腕 22 のモードが L なので,関節 m=2m=2 の位置は (x2,y2)=(1,0)(x_2, y_2) = (-1, 0) です.
  • (X2,Y2)=(0,3)(X_2, Y_2) = (0, 3) に到達させる方法では,$(x_0, y_0) = (0, 0), (x_1, y_1) = (0, 1), (x_2, y_2) = (0, 3)$ です.
  • (X3,Y3)=(2,1)(X_3, Y_3) = (2, -1) に到達させる方法では,$(x_0, y_0) = (0, 0), (x_1, y_1) = (0, -1), (x_2, y_2) = (2, -1)$ です.
5
0 0
1 0
2 0
3 0
4 0
-1
2
1 1
1 1
2
1 1
RU
UR

(Xj,Yj)(X_j, Y_j) の中に同じ点が含まれることもあります.

3
-7 -3
7 3
-3 -7
5
3 1 4 1 5
LRDUL
RDULR
DULRD