atcoder#ARC104F. [ARC104F] Visibility Sequence

[ARC104F] Visibility Sequence

配点 : 10001000

問題文

一列に並んだ NN 棟のビルが建設中であり、ビルには左から順番に 1,2,,N1, 2, \ldots, N の番号がついています。

長さ NN の整数列 XX が与えられ、ビル ii の高さ HiH_i は、11 以上 XiX_i 以下の整数のいずれかにすることができます。

1iN1 \leq i \leq N に対して、PiP_i を次のように定めます。

  • Hj>HiH_j > H_i を満たすような整数 j(1j<i)j (1 \leq j < i) が存在する場合はそのような jj の最大値、存在しない場合は 1-1 とする

全てのビルの高さの組み合わせを考えるとき、 PP としてありうる整数列の個数を 10000000071000000007 で割った余りを求めてください。

制約

  • 1N1001 \leq N \leq 100
  • 1Xi1051 \leq X_i \leq 10^5
  • 入力は全て整数である

入力

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

NN

X1X_1 X2X_2 \cdots XNX_N

出力

全てのビルの高さの組み合わせを考えるとき、 PP としてありうる整数列の個数を 10000000071000000007 で割った余りを出力せよ。

3
3 2 1
4

HH としては、次の 66 通りが考えられます。

  • H=(1,1,1)H = (1, 1, 1) のとき、PP(1,1,1)(-1, -1, -1) である
  • H=(1,2,1)H = (1, 2, 1) のとき、PP(1,1,2)(-1, -1, 2) である
  • H=(2,1,1)H = (2, 1, 1) のとき、PP(1,1,1)(-1, 1, 1) である
  • H=(2,2,1)H = (2, 2, 1) のとき、PP(1,1,2)(-1, -1, 2) である
  • H=(3,1,1)H = (3, 1, 1) のとき、PP(1,1,1)(-1, 1, 1) である
  • H=(3,2,1)H = (3, 2, 1) のとき、PP(1,1,2)(-1, 1, 2) である

よって、PP としてありうる整数列は (1,1,1),(1,1,2),(1,1,1),(1,1,2)(-1, -1, -1), (-1, -1, 2), (-1, 1, 1), (-1, 1, 2)44 個です。

3
1 1 2
1

HH としては、次の 22 通りが考えられます。

  • H=(1,1,1)H = (1, 1, 1) のとき、PP(1,1,1)(-1, -1, -1) である
  • H=(1,1,2)H = (1, 1, 2) のとき、PP(1,1,1)(-1, -1, -1) である

よって、PP としてありうる整数列は 11 個です。

5
2 2 2 2 2
16
13
3 1 4 1 5 9 2 6 5 3 5 8 9
31155