AT_colopl2018_final_e キャプテン・タカハシ
题目描述
高桥君正在与计算机对战一款海战游戏,游戏中不同关卡会有不同类型的敌舰。他已经成功通过筏子、独木舟、帆船、高速桨帆船、战舰和航母关卡,终于来到了最终的潜艇关卡。
游戏在一个 $H \times W$ 的网格上进行,模拟一个海域。敌人的潜艇隐藏在一些格子中,而每个格子最多容纳一艘潜艇。
高桥君通过探测器得知每一列潜艇的数量。第 $i$ 列中有 $A_i$ 艘潜艇。
他手中有 $H$ 枚深水炸弹,并可以从上到下依次在每行投掷一枚炸弹。针对每一行,高桥君可以指定一个整数,如果该行的潜艇数量与指定的整数相同,则可以炸毁那行的所有潜艇;否则,无法炸毁。
高桥君希望找出有多少种方式可以指定这些整数,使得所有行中的潜艇都被摧毁。请计算出这种指定方式的数量,并输出结果对 $10^9+7$ 取模后的值。
输入格式
输入从标准输入中提供,格式如下:
> $H$ $W$ $A_1$ $A_2$ $\cdots$ $A_W$
输出格式
输出使得所有行的潜艇都能被摧毁的整数指定组合数量对 $10^9+7$ 取模的结果。
## 数据范围
- $1 \leq H, W \leq 40$
- $0 \leq A_i \leq H\ (1 \leq i \leq W)$
- 输入均为整数
### 示例解释
例如,对于某个具体情况,满足条件的指定组合有 $(0,1,1,2), (0,1,2,1), (0,2,1,1), (1,0,1,2), (1,0,2,1), (1,1,0,2), (1,1,2,0), (1,2,0,1), (1,2,1,0), (2,0,1,1), (2,1,0,1), (2,1,1,0), (1,1,1,1)$,共 $13$ 种不同的组合。
**本翻译由 AI 自动生成**
说明/提示
### 制約
- $ 1\ \leq\ H,W\ \leq\ 40 $
- $ 0\ \leq\ A_i\ \leq\ H(1\leq\ i\leq\ W) $
- 入力はすべて整数である
### Sample Explanation 1
条件を満たす整数の組は、$ (0,1,1,2),(0,1,2,1),(0,2,1,1),(1,0,1,2),(1,0,2,1),(1,1,0,2),(1,1,2,0),(1,2,0,1),(1,2,1,0),(2,0,1,1),(2,1,0,1),(2,1,1,0),(1,1,1,1) $ の $ 13 $ 通りです。