#60709. stack
stack
暂无测试数据。
小 $\mathcal{L}$ 有一个栈和一个队列,现在队列中有 $n$ 个不同元素,每次可以选择两种操作:
- 把队头的元素放到栈顶(如果队列为空则不能进行该操作)
- 把栈顶元素放入输出数组(如果栈为空则不能进行该操作)
现在总共要进行 $2n$ 次操作,故输出数组长度必然为 $n$。
小 $\mathcal{L}$ 有强迫症,所以输出数组的第一个位置的元素有必须是自己喜欢的。
现在给出队列($a_1\sim a_n$ 其中 $a_1$ 为队头)中的元素的属性($a_i$ 为 $1$ 则表示该元素小 $\mathcal{L}$ 喜欢,为 $0$ 则不喜欢),您需要求出符合小 $\mathcal{L}$ 要求的不同的出栈入栈方式的个数,因为结果很大,所以您只需要给出结果 $\bmod 998244353$ 后的结果即可。
输入格式
输入包含两行。
第一行输入一个正整数 $n$。
第二行输入 $n$ 个正整数 $a_1,a_2,...,a_n$。
输出格式
输出一个正整数表示答案。
数据范围
对于 $20\%$ 的数据 $n\leq 10$。
对于 $40\%$ 的数组 $n\leq 2333$。
对于另外 $20\%$ 的数据仅存在 $a_1$ 的值为 $1$。
对于另外 $20\%$ 的数据仅存在唯一的 $i$,使得 $a_i=1$。
对于 $100\%$ 的数据 $n\leq1\times 10^6$,$a_i\in\{0,1\}$。
3
1 0 1
3
5
1 0 1 0 1
24