U590277 y.y Medians
题目背景
zr2665
题目描述
给定一个排列 $p$ .要求计算 $p$ 的每个前缀的中位数.
$n$ 个数的中位数是这些数中第 $\lceil n / 2\rceil$ 小的数.
举个例子 $\{1,2,3,4,5,6\}$ 的中位数是 $3,\{1,2,4,8,16\}$ 的中位数是 4 .
因为输入量很大,排列用以下方法生成
$$
a_i=\left(a_{i-1} * 998244353+10^9+7\right) \bmod \left(10^9+9\right), p_i=i
$$
然后 $i$ 从 1 到 $n$ ,交换 $p_i$ 和 $p_{\left(a_i \bmod i\right)+1}$
这样就得到了排列 $p$ .
输入格式
一行两个整数 $n$ 和 $a_0$
输出格式
记 $a n s_i$ 表示 $p_{1 . . . i}$ 的中位数,输出 $\sum\left(a n s_i * 19^i\right) \bmod 998244353$ .
说明/提示
$\begin{aligned} & a_0 \leq 10^9 \\ & \text { subtask1(30pts): } n \leq 1000 \\ & \text { subtask2(20pts): } n \leq 6000 \\ & \text { subtask3(30pts): } n \leq 100000 \\ & \text { subtask4(20pts): } n \leq 10^7\end{aligned}$