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 $ 通りです。