01序列
题号:NC14383
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 64 M,其他语言128 M
64bit IO Format: %lld

题目描述

给定长度为 01序列,序列中部分位置已经确定,剩余部分01等概率出现。对最终序列求最长不下降序列(如有多种可能序列,则在此基础上最大化1的个数),设最长不下降序列的长度为 len,最长不下降序列中1的个数为 num,求期望 E(len * num) * 2 ^ 10000 对 1000000007 取模的结果。

输入描述:

第一行包括一个正整数 n(1 <= n <= 1000).
第二行包括 n 个数 a[i](a[i]∈{-1, 0, 1}),a[i] 等于-1表示数列此位置未确定,a[i] 等于0和1表示数列此位置已确定为a[i] .

输出描述:

一行,即所求答案.
示例1

输入

复制
5
1 1 1 0 -1

输出

复制
820147489