AT_abc035_b [ABC035B] ドローン

Description

[problemUrl]: https://atcoder.jp/contests/abc035/tasks/abc035_b 無限に広い二次元グリッドの原点 $ (0,\ 0) $ に高橋君と $ 1 $ 台のドローンがいます。このドローンは文字列が与えられた時、文字列の先頭から末尾までのそれぞれの文字を $ 1 $ つの命令と解釈して順に実行します。命令は以下の $ 4 $ 種類です。 - `L` 現在のドローンの位置を $ (x,\ y) $ として $ (x-1,\ y) $ に移動する - `R` 現在のドローンの位置を $ (x,\ y) $ として $ (x+1,\ y) $ に移動する - `U` 現在のドローンの位置を $ (x,\ y) $ として $ (x,\ y+1) $ に移動する - `D` 現在のドローンの位置を $ (x,\ y) $ として $ (x,\ y-1) $ に移動する 今、ドローンに何らかの命令が与えられ、どこかへと移動しました。高橋君はドローンに送られた命令を表す文字列である $ S $ を手に入れたものの、いくつかの箇所は破損し`?`になり分からなくなってしまいました。ただし、`?`が元々は`L`、`R`、`U`、`D`のいずれかの文字だったことが分かっています。 ドローンと高橋君の距離はドローンの位置を $ (x,y) $ としてマンハッタン距離 $ |x|+|y| $ で表されます。求める値の種類を表す整数 $ T $ が与えられるので、移動を終えたあとのドローンと高橋君の距離としてありうる値のうち、 $ T=1 $ ならば最大値を、 $ T=2 $ ならば最小値を求めてください。

Input Format

入力は以下の形式で標準入力から与えられる。 > $ S $ $ T $ - $ 1 $ 行目にドローンに与えられた命令を表す文字列 $ S(1≦|S|≦10^5) $ が与えられる。ここで、 $ |S| $ は文字列 $ S $ の長さを表す。 - $ S $ は`L`、`R`、`U`、`D`、`?`の $ 5 $ 種類の文字のみからなる。 - $ 2 $ 行目に求める値の種類を表す整数 $ T\ (1≦T≦2) $ が与えられる。

Output Format

- $ T=1 $ ならば移動を終えたあとのドローンと高橋君の距離としてありうる値のうち、最大値を $ 1 $ 行に出力せよ。 - $ T=2 $ ならば移動を終えたあとのドローンと高橋君の距離としてありうる値のうち、最小値を $ 1 $ 行に出力せよ。 - 改行を忘れないこと。

Explanation/Hint

### 部分点 この問題には部分点が設定されている。 - $ T=1 $ のデータセットに全て正解した場合 $ 100 $ 点が与えられる。 - 追加制約のないデータセットに正解した場合、追加で $ 1 $ 点が与えられ、合計 $ 101 $ 点が得られる。 ### Sample Explanation 1 \- ドローンが最終的にいる可能性がある位置は $ (-2,1),\ (-1,0),\ (-1,2),\ (0,1) $ の $ 4 $ つです。ドローンと高橋君の距離 $ |x|+|y| $ のうち最大値は $ 3 $ となります。 - このケースは部分点の追加制約を満たします。 ### Sample Explanation 2 \- ドローンが最終的にいる可能性がある位置は $ (1,0),\ (-1,0),\ (0,1),\ (0,-1) $ の $ 4 $ つです。ドローンと高橋君の距離 $ |x|+|y| $ のうち最大値は $ 1 $ となります。 - このケースは部分点の追加制約を満たします。 ### Sample Explanation 3 \- このケースは部分点の追加制約を満たします。 ### Sample Explanation 4 \- このケースは部分点の追加制約を満たしません。