#CF1608F. MEX 计数

MEX 计数

MEX 计数

  • 时间限制:5 秒
  • 内存限制:256 MiB

题目描述

对于一个非负整数数组 cc,定义 MEX⁡(c)\operatorname{MEX}(c) 为没有在 cc 中出现的最小非负整数。例如,MEX⁡([0,1,3])=2\operatorname{MEX}([0,1,3])=2,MEX⁡([42])=0\operatorname{MEX}([42])=0。

给定整数 n,kn,k 和数组 b1,b2,…,bnb_1,b_2,\ldots,b_n。求有多少个数组 a1,a2,…,ana_1,a_2,\ldots,a_n 同时满足:

  • 对每个 1≤i≤n1\le i\le n,都有 0≤ai≤n0\le a_i\le n;
  • 对每个 1≤i≤n1\le i\le n,都有$$\left|\operatorname{MEX}([a_1,a_2,\ldots,a_i])-b_i\right|\le k.$$

答案可能很大,请输出其对 998 244 353998\,244\,353 取模后的结果。

输入格式

第一行包含两个整数 n,kn,k。

第二行包含 nn 个整数 b1,b2,…,bnb_1,b_2,\ldots,b_n。

输出格式

输出一个整数,表示满足条件的数组个数对 998 244 353998\,244\,353 取模后的结果。

样例输入 1

4 0
0 0 0 0

样例输出 1

256

样例输入 2

4 1
0 0 0 0

样例输出 2

431

样例输入 3

4 1
0 0 1 1

样例输出 3

509

样例输入 4

5 2
0 0 2 2 0

样例输出 4

6546

样例输入 5

3 2
-2 0 4

样例输出 5

11

数据范围

对于所有数据:

  • 1≤n≤20001\le n\le 2000;
  • 0≤k≤500\le k\le 50;
  • −k≤bi≤n+k-k\le b_i\le n+k。
子任务编号 分值 特殊限制
1 20 n≤7n\le 7
2 40 n≤100n\le 100
3 无特殊限制

每个测试点独立计分。

说明

本题中的所有下标均从 11 开始。每个位置的 aia_i 都可以独立取 0,1,…,n0,1,\ldots,n 中的任意一个整数。