QOJ.ac

QOJ

时间限制: 1 s 内存限制: 256 MB 总分: 100

#8476. 苹果家族团聚

统计

在一个雨夜,一只戴着兜帽的母马疾驰进一个空荡荡的集市,走进了一家昏暗的古玩店。她开始在店里翻找,直到点亮了一支小蜡烛。

“有什么能帮您的吗,旅行者?”店主,一匹种马,走出来问道。他走到柜台后,推测出某种强大的力量将这位顾客吸引到了他的店里;她指向货架上玻璃罩内的一枚镶嵌着深红色宝石的护身符。

“啊,您的眼光真好。这枚‘空角兽护身符’(Alicorn Amulet)是所有已知魔法护身符中最神秘、最强大的之一。呃,啊——恐怕这……太危险了。”

(母马将一大袋金币扔在柜台上。)

“您需要礼品包装吗?”

……

第二天早上,所有小马醒来时发现自己变成了排列!

小马国里有 $n!$ 只小马。邪恶的魔法将所有小马变成了长度为 $n$ 的 $n!$ 种不同的排列。

为了减少恐慌,变成了排列 $A$ 的苹果杰克(Applejack)决定尽快召集她的家人。她注意到,对于另一个排列 $P$,如果她可以通过若干次“一二三变换”(One-Two-Three-transformation)将自己变成 $P$,那么 $P$ 就是苹果家族的一员。

“一二三变换”如下:选择 3 个相邻元素 $A_i, A_{i+1}, A_{i+2}$。如果 $A_i$ 是它们的中位数,你可以将其放到 $A_{i+2}$ 之后,换句话说,将这三个元素变换为 $A_{i+1}, A_{i+2}, A_i$。如果 $A_{i+2}$ 是它们的中位数,你可以将其放到 $A_i$ 之前,换句话说,将这三个元素变换为 $A_{i+2}, A_i, A_{i+1}$。

事实上,如果一个排列可以通过“一二三变换”变成另一个排列,那么它们属于同一个家族。让我们选择每个家族中字典序最小的排列作为该家族的代表。然后,我们可以按代表的字典序对所有家族进行排序,得到家族列表 $F_1, F_2, \dots$。例如,排列 $(1, 2, \dots, n)$ 总是属于家族 $F_1$。

每只小马都应该去其家族的临时避难所。排列 $P \in F_i$ 意味着小马 $P$ 应该去避难所 $i$ 与其家人会合。

请帮助苹果杰克找到苹果家族应该去的避难所,以及苹果家族中有多少只小马。

输入格式

第一行包含一个整数 $n$ ($3 \le n \le 10^5$)。

第二行包含 $n$ 个整数 $A_1, A_2, \dots, A_n$,表示苹果杰克变成的排列 $A$。

输出格式

输出一行,包含一个整数。

我们已知存在唯一的 $i$ 使得 $A \in F_i$。如果 $i \le 65\,472$,输出苹果家族中小马的数量对 $998\,244\,353$ 取模的结果。否则,直接输出 $i$ 对 $998\,244\,353$ 取模的结果作为答案。

样例

输入 1

3
2 1 3

输出 1

2

说明

总共有 4 个家族:

  • $F_1 = \{(1, 2, 3)\}$
  • $F_2 = \{(1, 3, 2), (2, 1, 3)\}$
  • $F_3 = \{(2, 3, 1), (3, 1, 2)\}$
  • $F_4 = \{(3, 2, 1)\}$

因此苹果家族是 $F_2 = \{(1, 3, 2), (2, 1, 3)\}$,其代表是 $(1, 3, 2)$。所以,输出苹果家族中小马的数量,即 2。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.