AtCoder Regular Contest 023
C
タコヤ木
AtCoder
⌀ 1833
原题
← BD →
翻译中…

Problem Statement

翻译中…

高橋君が謎の人物Xからもらったたこ焼きを庭に植えると、たこ焼きの木が生えてきました。高橋君はその木に「タコヤ木」という名前をつけて大切に育てていました。ある日、高橋君はタコヤ木にたこ焼きの実がなっているのを見つけました。そこで高橋君はタコヤ木になったたこ焼きの実の個数を毎日数え、「今までになったたこ焼きの実の個数の合計」を記録していくことにしました。

翻译中…

記録を付け始めてから $N$ 日が経ったある日、高橋君がたこ焼きの実をうっかり記録帳に落としてしまい、$N$ 日分の記録のうちの一部が汚れて読めなくなってしまいました。高橋君はこの記録をなんとか復元したいと思い、まずは何通りの記録がありうるのかを計算してみることにしました。

翻译中…

Input

翻译中…

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

翻译中…

N
A_1 A_2 ... A_N

翻译中…
  • $1$ 行目には、記録の日数を表した整数 $N (1 ≦ N ≦ 2,000)$ が与えられる。
  • $2$ 行目には、記録に関する情報を表す $N$ 個の整数が空白区切りで与えられる。このうち $i$ 番目の整数 $A_i (1 ≦ A_i ≦ 10^9 または A_i = -1)$ は、 ただし、$A_1$ と $A_N$ は $-1$ ではない。
  • $A_i$ が $-1$ のときは、$i$ 日目の記録が汚れて読めなくなってしまったことを表す。
    • $A_i$ が $-1$ でないときは、$i$ 日目の記録が読める状態であり、「$i$ 日目までになったたこ焼きの実の個数の合計」が $A_i$ 個であることを表す。
  • 入力データでは、記録として考えられるものが必ず $1$ 通り以上ありうることが保証されます。
翻译中…

部分点

翻译中…

この問題には部分点が設定されている。

翻译中…
  • $N ≦ 100$ かつ $A_i ≦ 100$ を満たすテストケースすべてに正解した場合は $50$ 点が与えられる。
  • $A_i ≦ 2,000$ を満たすテストケースすべてに正解した場合は $80$ 点が与えられる。
翻译中…

Output

翻译中…

$N$ 日分の記録としてありうるものの個数を $1,000,000,007$ (素数)で割った余りを $1$ 行に出力せよ。出力の末尾に改行をいれること。

翻译中…

样例

Input #1
3
1 -1 3
Output #1
3
$3$ 日分の記録としてありうるものは以下の $3$ 通りです。 - 1 1 3 - 1 2 3 - 1 3 3 記録しているものは「今までになったたこ焼きの実の個数の合計」であるため、ある日の記録が前の日の記録よりも少なくなることはないことに注意して下さい。
Input #2
6
2 -1 -1 9 -1 9
Output #2
36
Input #3
5
1 -1 -1 -1 1000000000
Output #3
999999972
答えは非常に大きくなることがあるため、$1,000,000,007$ で割ったあまりを求めることを忘れないで下さい。
题目信息
题号
arc023_3
时间限制
2 s
内存限制
256 MB

题面与样例版权归 AtCoder 及出题人所有;中文翻译由 AI 生成(CI 管线),如有出入请以原文为准。