问题描述
Snuke正在向他的工厂引入一个具有以下属性的机械手臂:
- 机械手臂由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)。
Snuke想引入一个机械手臂,使得关节m的位置可以与所有的N个点(X1,Y1),(X2,Y2),...,(XN,YN)对应起来,通过适当指定节段的模式。是否可能?如果可能,找到这样一个机械手臂以及如何将关节m带到每个点(Xj,Yj)。
约束条件
- 输入中的所有值均为整数。
- 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的字符串,表示将机械手臂的关节m带到点(Xj,Yj)的方式。wj的第i个字符应该是字母L
,R
,D
或U
,表示节段i的模式。
示例输入1
3
-1 0
0 3
2 -1
示例输出1
2
1 2
RL
UU
DR
在给定的将机械手臂的关节m带到每个(Xj,Yj)的方式中,关节的位置将如下:
- 对于(X1,Y1)=(−1,0):首先,关节0的位置为(x0,y0)=(0,0)。由于节段1的模式是
R
,关节1的位置为(x1,y1)=(1,0)。然后,由于节段2的模式是L
,关节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)$。
示例输入2
5
0 0
1 0
2 0
3 0
4 0
示例输出2
-1
示例输入3
2
1 1
1 1
示例输出3
2
1 1
RU
UR
在(Xj,Yj)中可能有重复的点。
示例输入4
3
-7 -3
7 3
-3 -7
示例输出4
5
3 1 4 1 5
LRDUL
RDULR
DULRD