上一层高度不能比下一层矮超过 d,也就是 v上≥v下−d。升高永远合法,下落只允许不超过 d。
998244353 取模。冷链库要把 m 个已经贴好箱号的周转箱放到 m 层货架上,每层恰好一箱。箱号从 1 到 m,即使两箱高度相同,箱号不同也算不同摆法。从下往上数,第 i 层放的箱子箱号记为 pi。
第 i 号箱子的高度是正整数 vi。为了不让上层塌得太狠,对所有 1≤i<m,必须满足 vpi+1≥vpi−d,也就是上一层最多比下一层矮 d。请计算有多少种排列 p 能摆稳。答案可能很大,输出对 998244353 取模的结果。
约束:
2 ≤ m ≤ 2000001 ≤ d ≤ 10000001 ≤ vi ≤ 1000000第一行两个整数 m、d(2 ≤ m ≤ 200000,1 ≤ d ≤ 1000000),表示箱子个数和允许的最大下落高度。
第二行 m 个整数 v1,v2,…,vm(1 ≤ vi ≤ 1000000),表示各箱高度。
输出一个整数,即合法摆法数量对 998244353 取模的结果。
输入
3 1
1 2 3
输出
4
说明
箱号 1、2、3 的高度分别是 1、2、3。从下到上合法的箱号排列有 [1,2,3]、[1,3,2]、[2,1,3]、[3,2,1],共 4 种。[2,3,1] 和 [3,1,2] 会从 3 一下子落到 1,超过 d=‘1‘。
输入
2 1
8 1
输出
1
说明
只能把矮的 1 号箱放下面、高的 8 号箱放上面。反过来上一层会矮 7,超过 d=‘1‘。
输入
3 10
4 4 4
输出
6
说明
三箱高度相同,怎么摆都不会下落,箱号可任意排列,答案是 3!=‘6‘。
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.