AT_abc221_g [ABC221G] Jumping sequence
Description
[problemUrl]: https://atcoder.jp/contests/abc221/tasks/abc221_g
無限に広がる $ 2 $ 次元の座標平面を考えます。 高橋君は最初 $ (0,0) $ に立っており、今から上下左右いずれかの方向を選んでジャンプすることを $ N $ 回行います。 それぞれのジャンプで移動する距離は定まっており、具体的には $ i $ 回目のジャンプでは距離 $ D_i $ を移動します。 $ N $ 回のジャンプの後で、ちょうど位置 $ (A,B) $ にいるようにすることは可能か判定し、 可能ならばそのような移動方法を $ 1 $ つ示してください。
ただし、現在の位置が $ (X,Y) $ のときに、それぞれの方向を選んで距離 $ D $ のジャンプをしたときの着地地点はそれぞれ以下の通りです。
- 上方向 : $ (X,Y)\ \to\ (X,Y+D) $
- 下方向 : $ (X,Y)\ \to\ (X,Y-D) $
- 左方向 : $ (X,Y)\ \to\ (X-D,Y) $
- 右方向 : $ (X,Y)\ \to\ (X+D,Y) $
Input Format
入力は以下の形式で標準入力から与えられる。
> $ N $ $ A $ $ B $ $ D_1 $ $ D_2 $ $ \ldots $ $ D_N $
Output Format
条件をみたす移動方法が存在するならば `Yes` 、そうでないならば `No` を $ 1 $ 行目に出力せよ。
`Yes` の場合は $ 2 $ 行目に条件をみたす移動方法を、`U` , `D` , `L` , `R` からなる長さ $ N $ の文字列 $ S $ として出力せよ。
ただし、$ S $ の $ i $ 文字目が
- `U` のとき、 $ i $ 回目のジャンプでは上方向に移動する
- `D` のとき、 $ i $ 回目のジャンプでは下方向に移動する
- `L` のとき、 $ i $ 回目のジャンプでは左方向に移動する
- `R` のとき、 $ i $ 回目のジャンプでは右方向に移動する
ことを指す。
Explanation/Hint
### 制約
- $ 1\ \leq\ N\ \leq\ 2000 $
- $ \lvert\ A\rvert,\ \lvert\ B\rvert\ \leq\ 3.6\times\ 10^6 $
- $ 1\ \leq\ D_i\ \leq\ 1800 $
- 入力は全て整数である。
### Sample Explanation 1
$ 1 $ 回目のジャンプで左方向に、$ 2 $ 回目のジャンプで下方向に、$ 3 $ 回目のジャンプで右方向にジャンプすると、 $ (0,0)\to(-1,0)\to(-1,-2)\to(2,-2) $ と高橋君は動き、 最終的に $ (2,-2) $ に到達しているためこれは条件をみたしています。
### Sample Explanation 2
$ 2 $ 回のジャンプの後でちょうど $ (1,0) $ にいるようにすることはできません。