atcoder#ARC129F. [ARC129F] Let's Play Tag

[ARC129F] Let's Play Tag

配点 : 10001000

問題文

数直線上に,すぬけくんと N+MN+M 人の子供が立っています.

時刻 00 の彼らの位置は以下のようなものです.

  • すぬけくんは座標 00 にいる.
  • NN 人の子供は座標が負の位置におり,このうち ii 番目の子供は座標 Li-L_i にいる.
  • MM 人の子供は座標が正の位置におり,このうち ii 番目の子供は座標 RiR_i にいる.

今から彼らは鬼ごっこを開始します. 具体的には,彼らは以下の行動をします.

  • すぬけくんは最初に,NN 個の LMM 個の R からなる文字列 ss を一つ選ぶ. その後,各 i=1,2,,N+Mi=1,2,\cdots,N+M について以下の操作を行う.
    • ssii 文字目が L なら,座標が負の方向へ速度 22 で移動を開始する.
    • ssii 文字目が R なら,座標が正の方向へ速度 22 で移動を開始する.
    • 子供を一人捕まえた(座標が一致した)時点で,次の ii での操作に移る. なお,i=N+Mi=N+M の場合は鬼ごっこが終了となる.
  • ssii 文字目が L なら,座標が負の方向へ速度 22 で移動を開始する.
  • ssii 文字目が R なら,座標が正の方向へ速度 22 で移動を開始する.
  • 子供を一人捕まえた(座標が一致した)時点で,次の ii での操作に移る. なお,i=N+Mi=N+M の場合は鬼ごっこが終了となる.
  • すべての子供は,すぬけくんから遠ざかる方向へ常に速度 11 で移動し続ける.

すぬけくんが最初に選ぶことができる文字列 ss 全てについて鬼ごっこが終了する時刻を求めたときの,それらの値の総和を 998244353998244353 で割った余りを求めてください.

制約

  • 3N,M2500003 \leq N,M \leq 250000
  • 1L1<L2<<LN<9982443531 \leq L_1 < L_2 < \cdots < L_N < 998244353
  • 1R1<R2<<RM<9982443531 \leq R_1 < R_2 < \cdots < R_M < 998244353
  • 入力される値はすべて整数である

入力

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

NN MM

L1L_1 L2L_2 \cdots LNL_N

R1R_1 R2R_2 \cdots RMR_M

出力

答えを出力せよ.

3 3
1 2 3
1 2 3
2748

例えば,s=s=LRRLLR の場合は,以下のようにゲームが進行します.

  • 時刻 00: すぬけくんが負の方向へ移動を開始する.
  • 時刻 11: すぬけくんが座標 2-2 で子供を捕まえた後,正の方向へ移動を開始する.
  • 時刻 55: すぬけくんが座標 66 で子供を捕まえた後,正の方向へ移動を開始する.
  • 時刻 66: すぬけくんが座標 88 で子供を捕まえた後,負の方向へ移動を開始する.
  • 時刻 2222: すぬけくんが座標 24-24 で子供を捕まえた後,負の方向へ移動を開始する.
  • 時刻 2323: すぬけくんが座標 26-26 で子供を捕まえたあと,正の方向へ移動を開始する.
  • 時刻 7575: すぬけくんが座標 7878 で子供を捕まえ,鬼ごっこが終了する.
7 5
89789743 196247866 205535557 542612813 782887985 889864096 899373580
539329402 618885430 714090971 717251433 860233092
937403116