AT_arc066_a [ABC050C] Lining Up
题目描述
有 $N$ 个人,编号为 $1$ 到 $N$。他们昨天以某种顺序排成一列,但今天已经忘记了具体的排列顺序。不过,每个人都记得“自己左边的人数和右边的人数的差的绝对值”。据他们所说,第 $i$ 个人记得的这个差的绝对值为 $A_i$。
请根据他们的报告,求可能的原排列方式有多少种。由于答案可能非常大,请输出答案对 $10^9+7$ 取模的结果。如果他们的报告有误,导致不存在可能的排列方式,请输出 $0$。
输入格式
输入通过标准输入给出,格式如下:
> $N$ $A_1$ $A_2$ $\ldots$ $A_N$
输出格式
输出可能的原排列方式数对 $10^9+7$ 取模的结果。
说明/提示
## 限制条件
- $1 \leq N \leq 10^5$
- $0 \leq A_i \leq N-1$
## 样例解释 1
可能的排列方式(以人的编号表示)有:
- $2,1,4,5,3$
- $2,5,4,1,3$
- $3,1,4,5,2$
- $3,5,4,1,2$
共 $4$ 种。
## 样例解释 2
无论怎样排列,都会与报告矛盾,因此答案为 $0$。
由 ChatGPT 4.1 翻译