ゆるふわ競技プログラミングオンサイト at FORCIA #8
コンテスト日時
2025/05/31 (Sa) 14:15 - 16:30

H - Many Count Middle Array Problem

ผักชี
2
s
1024
MB
800

問題文

てんぷらは次のような問題を考えました。

Count Middle Array Problem
長さ $N$ の整数列 $L=(L_1,L_2, \ldots , L_N), U=(U_1, U_2, \ldots , U_N)$ があります。
長さ $N$ の整数列 $(A_1,A_2, \ldots , A_N)$ であって、以下の条件をみたすものの個数を $998244353$ で割ったあまりを求めてください。

  • $1$ 以上 $N$ 以下の全ての整数 $i$ について $L_i \leq A_i \leq U_i$ が成り立つ

このままではゆるふわオンサイトの最終問題にはあまりにも簡単すぎると考えたてんぷらは以下のように改題しました。

Many Count Middle Array Problem
長さ $N$ の整数列 $(X_1,X_2, \ldots , X_N), (Y_1, Y_2, \ldots , Y_N)$ があります。
$(1, 2, \ldots, N)$ を並び替えて得られる $2$ つの長さ $N$ の順列 $(p_1, p_2, \ldots, p_N), (q_1, q_2, \ldots, q_N)$ の組は $(N!)^2$ 通り考えられますが、その全てに対する以下の値の総和を $998244353$ で割ったあまりを求めてください。

  • $L_i = X_{p_i}, U_i = Y_{q_i} (1\leq i \leq N)$ で定まる長さ $N$ の整数列 $L, U$ に対する Count Middle Array Problem の答え

Many Count Middle Array Problem を解いてください。

制約

  • $1 \le N \le 3000 $
  • $1 \le X_i \le 10^8$
  • $1 \le Y_i \le 10^8$
  • 入力は全て整数

入力

$N$
$X_1 \space X_2 \space \ldots \space X_N$
$Y_1 \space Y_2 \space \ldots \space Y_N$

出力

答えを1行に出力してください。

入力例 1
2 1 3 1 4
出力例 1
4
  • $p = (1, 2), q = (1, 2)$ のとき、$L = (1, 3), U = (1, 4)$ です。これに対する Count Middle Array Problem の答えは $2$ です。
  • $p = (1, 2), q = (2, 1)$ のとき、$L = (1, 3), U = (4, 1)$ です。これに対する Count Middle Array Problem の答えは $0$ です。
  • $p = (2, 1), q = (1, 2)$ のとき、$L = (3, 1), U = (1, 4)$ です。これに対する Count Middle Array Problem の答えは $0$ です。
  • $p = (2, 1), q = (2, 1)$ のとき、$L = (3, 1), U = (4, 1)$ です。これに対する Count Middle Array Problem の答えは $2$ です。

以上を足し合わせて、Many Count Middle Array Problem の答えは $4$ となります。

入力例 2
3 3 3 3 2 2 2
出力例 2
0
入力例 3
10 1 4 1 4 2 1 3 5 6 2 3 1 4 1 5 9 2 6 5 3
出力例 3
726775409
提出
C++23 (g++ 12.2.0)