Please sign in first.
C - Sum of Three Inversions
Editorial
/
/
Time Limit: 3 sec / Memory Limit: 1024 MiB
配点 : 100 点
問題文
整数 N, X, Y, K, M が与えられます。長さ N の整数列からなる 3 つ組 (A, B, C) であって、以下の条件をすべて満たす組の個数を M で割ったあまりを求めてください。ただし、数列 a の k 番目の要素を a_k と表すこととします。
- i = 1, 2, \dots, N について、(A_i, B_i, C_i) は (1, 2, 3) の順列である。
- A に含まれる 1, 2 の個数はそれぞれ X, Y である。
- A の転倒数と B の転倒数と C の転倒数の合計は K である。
転倒数とは?
数列 a の転倒数とは、1 \le i < j \le |a| かつ a_i > a_j を満たす整数組 (i, j) の個数を指します。制約
- 入力はすべて整数
- 2 \le N \le 50
- 0 \le X, Y \le N
- X + Y \le N
- 0 \le K \le \frac{3}{2}N(N - 1)
- {10}^8 \le M \le {10}^9
入力
入力は以下の形式で与えられる。
N X Y K M
出力
答えを出力せよ。
入力例 1
3 1 1 4 998244353
出力例 1
24
条件を満たす (A, B, C) は 24 通り存在します。例えば、A = (1, 2, 3), B = (3, 3, 2), C = (2, 1, 1) とすると、(A, B, C) は条件を満たします。
入力例 2
4 0 0 18 123456789
出力例 2
0
条件を満たす (A, B, C) は存在しません。
入力例 3
50 10 20 1000 1000000000
出力例 3
805988728