atcoder#ARC122A. [ARC122A] Many Formulae

[ARC122A] Many Formulae

配点 : 400400

問題文

長さ NN の非負整数列 A1,A2,,ANA_1,A_2,\cdots,A_N が与えられます.

この数列の隣接する 22 項の間に + または - を入れて,一つの式を作ることを考えます.

式を作る方法は 2N12^{N-1} 通りありますが,この中でも以下の条件を満たす式を,良い式と呼ぶことにします.

  • -22 回以上連続で登場しない.

全ての良い式の値を足し合わせた値を求めて下さい. なお,この値はかならず非負整数となることが証明できます. そこで,この値を 109+710^9+7 で割った余りを出力してください.

制約

  • 1N1051 \leq N \leq 10^5
  • 1Ai1091 \leq A_i \leq 10^9
  • 入力される値はすべて整数である

入力

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

NN

A1A_1 A2A_2 \cdots ANA_N

出力

答えを 109+710^9+7 で割った余りを出力せよ.

3
3 1 5
15

以下の 33 通りの良い式が考えられます.

  • 3+1+5=93+1+5=9
  • 3+15=13+1-5=-1
  • 31+5=73-1+5=7

3153-1-5-22 回以上連続で登場するため,良い式ではありません. よって,答えは 9+(1)+7=159+(-1)+7=15 となります.

4
1 1 1 1
10

以下の 55 通りの良い式が考えられます.

  • 1+1+1+1=41+1+1+1=4
  • 1+1+11=21+1+1-1=2
  • 1+11+1=21+1-1+1=2
  • 11+1+1=21-1+1+1=2
  • 11+11=01-1+1-1=0

よって答えは 4+2+2+2+0=104+2+2+2+0=10 となります.

10
866111664 178537096 844917655 218662351 383133839 231371336 353498483 865935868 472381277 579910117
279919144

答えを 109+710^9+7 で割った余りを出力してください.