luogu#P9307. 「DTOI-5」进行一个排的重 (Maximum Version)

    ID: 13284 远端评测题 1500ms 800MiB 尝试: 0 已通过: 0 难度: 5 上传者: 标签>动态规划,dp2023洛谷原创O2优化排列组合前缀和构造

「DTOI-5」进行一个排的重 (Maximum Version)

题目背景

本题与 Minimum Version 的区别是所求最值和数据范围不同。

小 L 热衷于重排数列使之规整。

题目描述

小 L 有一个长为 nn 的序列 aa,其中每一项 aia_i 都是一个 pair (pi,qi)(p_i, q_i)

为了让 aa 看起来规整一些,他钦定 p,qp, q 分别均为长为 nn 的排列。

为了对 aa 的规整程度进行量化计算,他给出了一个权值函数 $f(a) = \displaystyle\sum_{i = 1}^n ([p_i > \max_{j = 1}^{i - 1} p_j] + [q_i > \max_{j = 1}^{i - 1} q_j])$。注意 i=1i = 1 时两个方括号都能取到值,因为我们认为 $\displaystyle\max_{j = 1}^0 p_j = \displaystyle\max_{j = 1}^0 q_j = -\infty$。

为了让 aa 看起来更加规整,他决定分别以某种方式重排 aa 得到 aa' 使得 f(a)f(a') 最大。注意重排时必须将 ai=(pi,qi)a'_i = (p'_i, q'_i) 视为整体。

他希望你求出 f(a)maxf(a')_{\max} 的值,以及分别有多少个 aa' 可以取到 f(a)maxf(a')_{\max}

由于方案数可能很大,你只需要求出结果对 998244353998244353 取模的值。

输入格式

第一行,一个整数 nn

第二行,nn 个整数 p1,p2,,pnp_1, p_2, \cdots, p_n

第三行,nn 个整数 q1,q2,,qnq_1, q_2, \cdots, q_n

输出格式

一行,两个整数,表示所求的值。

5
1 5 2 4 3
1 4 2 5 3
9 2

提示

【数据范围】

$$\def\or{\operatorname{or}} %\def\arrayscretch{1.5} \def\arraystretch{1.5} \begin{array}{|c|c|c|}\hline \textbf{Subtask}&n\le &\textbf{Points}\cr\hline \sf1&10&10 \operatorname{pts}\cr\hline \sf2&50&20 \operatorname{pts}\cr\hline \sf3&500&20 \operatorname{pts}\cr\hline \sf4&2\times 10^3&20 \operatorname{pts}\cr\hline \sf5&/&30 \operatorname{pts}\cr\hline \end{array} $$

对于 100%100\% 的数据,1n1041 \leq n \leq 10^41pi,qin1 \leq p_i, q_i \leq n,保证 p,qp, q 均为排列