atcoder#AGC059F. [AGC059F] LIDS

[AGC059F] LIDS

题目描述

N, pos, val N,\ pos,\ val が与えられるので、(1,2,,N) (1,2,\ldots,N) の順列 P=(P1, P2, , PN) P=(P_1,\ P_2,\ \ldots,\ P_N) であって次の条件をすべて満たすものの個数を 109+7 10^9+7 で割った余りを求めてください。

  • LIS(P) + LDS(P) = N+1 LIS(P)\ +\ LDS(P)\ =\ N+1
  • Ppos = val P_{pos}\ =\ val

ここで、LIS(P) LIS(P) P P の最長増加部分列の長さを表し、LDS(P) LDS(P) P P の最長減少部分列の長さを表します。

输入格式

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

N N pos pos val val

输出格式

答えを出力せよ。

题目大意

求满足下列要求的 NN 阶排列 PP 的个数:

  1. LIS(P)+LDS(P)=N+1LIS(P)+LDS(P)=N+1
  2. Ppos=valP_{pos}=val

其中 LIS(P)LIS(P)PP 的最长上升子序列长度,LDS(P)LDS(P)PP 的最长下降子序列长度。

答案对 109+710^9+7 取模。

3 2 2
2
4 1 1
6
5 2 5
11
2022 69 420
128873576

提示

制約

  • 1  N  5 106 1\ \le\ N\ \le\ 5\cdot\ 10^6
  • 1  pos, val  N 1\ \le\ pos,\ val\ \le\ N
  • 入力中のすべての値は整数である。

Sample Explanation 1

条件を満たす順列は (1, 2, 3), (3, 2, 1) (1,\ 2,\ 3),\ (3,\ 2,\ 1) です。

Sample Explanation 2

条件を満たす順列は $ (1,\ 2,\ 3,\ 4),\ (1,\ 2,\ 4,\ 3),\ (1,\ 3,\ 2,\ 4),\ (1,\ 3,\ 4,\ 2),\ (1,\ 4,\ 2,\ 3),\ (1,\ 4,\ 3,\ 2) $ です。