配点 : 600 点
問題文
すぬけ君の工場では,次のような特徴を持つ ロボットアーム を導入することになりました:
- ロボットアームは,m 個の 腕 と m+1 個の 関節 からなる.腕には 1, 2, ..., m で,関節には 0, 1, ..., m で番号が付けられている.腕 i は関節 i−1 と関節 i をつなぐ.腕 i の長さは di である.
- 各腕には,それぞれ独立に モード を指定することができる.モードは
L
, R
, D
, U
のいずれかであり,腕のモードはその腕の向きを指定する.工場を座標平面とみなすと,関節 i の座標 (xi,yi) は次のように定まる:- (x0,y0)=(0,0).
- 腕 i のモードが
L
のとき,(xi,yi)=(xi−1−di,yi−1).
- 腕 i のモードが
R
のとき,(xi,yi)=(xi−1+di,yi−1).
- 腕 i のモードが
D
のとき,(xi,yi)=(xi−1,yi−1−di).
- 腕 i のモードが
U
のとき,(xi,yi)=(xi−1,yi−1+di).
すぬけ君は,腕のモードをうまく指定することにより,N 個の点 (X1,Y1),(X2,Y2),...,(XN,YN) のいずれにもロボットアームの関節 m をちょうど一致させられるようなロボットアームを導入したいです.
このようなことは可能でしょうか?
可能ならば,条件を満たすロボットアームおよび,各点 (Xj,Yj) にそのロボットアームの関節 m を到達させるためのモードの指定方法を求めてください.
制約
- 入力はすべて整数である
- 1≤N≤1000
- −109≤Xi≤109
- −109≤Yi≤109
部分点
- 300 点分のテストケースでは,−10≤Xi≤10 および −10≤Yi≤10 が成り立つ.
入力
入力は以下の形式で標準入力から与えられる.
N
X1 Y1
X2 Y2
:
XN YN
出力
条件を満たすことが可能なら,次の形式で出力せよ.不可能な場合は -1
を出力せよ.
m
d1 d2 ... dm
w1
w2
:
wN
m および di はロボットアームの情報を表す.それぞれの変数の意味は問題文を参照せよ.
ここで,1≤m≤40, 1≤di≤1012 かつ m,di はすべて整数でなければならない.
wj は m 文字からなる文字列であり,点 (Xj,Yj) にロボットアームの関節 m を到達させる方法を表す.
wj の i 文字目は L
, R
, D
, U
のいずれかの文字であり,腕 i のモードを表す.
3
-1 0
0 3
2 -1
2
1 2
RL
UU
DR
それぞれの (Xj,Yj) にロボットアームの関節 m を到達させる方法において,各関節の位置は次のようになります.
- (X1,Y1)=(−1,0) に到達させる方法では,まず関節 0 の位置は (x0,y0)=(0,0) です.腕 1 のモードが
R
なので,関節 1 の位置は (x1,y1)=(1,0) です.腕 2 のモードが L
なので,関節 m=2 の位置は (x2,y2)=(−1,0) です.
- (X2,Y2)=(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_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) の中に同じ点が含まれることもあります.
3
-7 -3
7 3
-3 -7
5
3 1 4 1 5
LRDUL
RDULR
DULRD