CF1474F 1 2 3 4 ...
题目描述
Igor 有一个整数序列 $d_1, d_2, \dots, d_n$。当 Igor 进入教室时,黑板上写着一个整数 $x$。
Igor 使用如下算法生成序列 $p$:
1. 初始时,$p = [x]$;
2. 对于每个 $1 \leq i \leq n$,他执行 $|d_i|$ 次如下操作:
- 如果 $d_i \geq 0$,他查看 $p$ 的最后一个元素(记为 $y$),并在 $p$ 末尾添加 $y+1$;
- 如果 $d_i < 0$,他查看 $p$ 的最后一个元素(记为 $y$),并在 $p$ 末尾添加 $y-1$。
例如,如果 $x = 3$,$d = [1, -1, 2]$,则 $p = [3, 4, 3, 4, 5]$。
Igor 决定计算 $p$ 的最长严格递增子序列的长度以及这样的子序列的个数。
如果序列 $a$ 可以通过从序列 $b$ 中删除若干(可以为零或全部)元素得到,则称 $a$ 是 $b$ 的一个子序列。
如果序列 $a$ 中每个元素(除了第一个)都严格大于前一个元素,则称 $a$ 是递增序列。
对于 $p = [3, 4, 3, 4, 5]$,最长递增子序列的长度为 $3$,共有 $3$ 个:$[\underline{3}, \underline{4}, 3, 4, \underline{5}]$,$[\underline{3}, 4, 3, \underline{4}, \underline{5}]$,$[3, 4, \underline{3}, \underline{4}, \underline{5}]$。
输入格式
第一行包含一个整数 $n$($1 \leq n \leq 50$),表示序列 $d$ 的长度。
第二行包含一个整数 $x$($-10^9 \leq x \leq 10^9$),表示黑板上的整数。
第三行包含 $n$ 个整数 $d_1, d_2, \ldots, d_n$($-10^9 \leq d_i \leq 10^9$)。
输出格式
输出两个整数:
- 第一个整数表示 $p$ 的最长递增子序列的长度;
- 第二个整数表示这样的子序列的个数,对 $998244353$ 取模。
你只需要对第二个数取模。
说明/提示
第一个测试样例已在题面中给出说明。
第二个测试样例 $p = [100, 101, 102, 103, 104, 105, 104, 103, 102, 103, 104, 105, 106, 107, 108]$。
第三个测试样例 $p = [1, 2, \ldots, 2000000000]$。
由 ChatGPT 4.1 翻译