已结束 GESP巅峰赛#30

A7171 | 雾港学宫的能量链

时间限制1s
内存限制128MB
通过 / 提交0/0

题目描述

雾港学宫在调试一条由 $n$ 个“符号元件”组成的能量链。第 $i$ 个元件的数值为 $a_i$(可能为正、负或 $0$)。你可以从中选出一个非空子序列来组成一段实验序列 $b_1,b_2,\dots,b_L$(保持相对顺序,即存在下标
$$ 1\le i_1<i_2<\cdots<i_L\le n,\quad b_j=a_{i_j}. $$

对选出的序列,定义前缀乘积:
$$ P_k=b_1\cdot b_2\cdots b_k\quad(1\le k\le L). $$

我们只关心每个 $P_k$ 的符号,定义
$$ \operatorname{sgn}(x)= \begin{cases} +,& x>0,\\ -,& x<0,\\ 0,& x=0. \end{cases} $$


$$ S_k=\operatorname{sgn}(P_k). $$
定义该子序列的“符号变化次数”为
$$ $$
$$ C=\left|\{\,k\mid 2\le k\le L,\ S_k\ne S_{k-1}\,\}\right|. $$

$$ $$

你的目标是:

1. 在所有非空子序列中,使 $C$ 尽可能小,记最小值为 $C_{\min}$;
2. 统计有多少个不同的非空子序列能达到 $C_{\min}$,将该数量对 $M$ 取模。

请输出 $C_{\min}$ 和方案数(模 $M$)。

输入格式

第一行两个整数 $n,M$。
第二行 $n$ 个整数 $a_1,a_2,\dots,a_n$。

输出格式

输出一行两个整数:$C_{\min}$ 与达到 $C_{\min}$ 的子序列个数 $\bmod M$。

输入输出样例

输入 #1
5 1000000007
2 -3 0 -5 4
输出 #1
0 11
C++ 编辑器
输入
输出