#S0016. 分段整理(segments)

分段整理(segments)

题目描述

传送带上依次摆放着 nn 个货箱,编号为 1,2,…,n1,2,\ldots,n,每个编号恰好出现一次。用 pip_i 表示第 ii 个位置上的货箱编号,序列 p1,p2,…,pnp_1,p_2,\ldots,p_n 因而是一个排列。

管理员准备进行一次分段整理:先在原序列中选出若干个长度至少为 22、互不重叠的连续区间,再将每个区间内的货箱按编号从小到大排列。区间外的货箱保持原位。选出的区间可以紧挨着,也可以一个区间都不选。

请你求出,整理结束后可能得到多少种不同的编号序列。若两种区间选择得到的最终序列完全相同,只计为一种。答案对 998244353998244353 取模。

输入格式

第一行包含一个整数 nn,表示货箱的数量。

第二行包含 nn 个整数 p1,p2,…,pnp_1,p_2,\ldots,p_n,依次表示各个位置上的货箱编号。

输出格式

输出一行,包含一个整数,表示不同最终序列的数量对 998244353998244353 取模后的结果。

样例输入 1

5
2 1 4 3 5

样例输出 1

4

样例 1 解释

可能得到的序列共有 44 种,分别为 (2,1,4,3,5)(2,1,4,3,5)、(1,2,4,3,5)(1,2,4,3,5)、(2,1,3,4,5)(2,1,3,4,5) 和 (1,2,3,4,5)(1,2,3,4,5)。

样例输入 2

4
1 2 3 4

样例输出 2

1

样例 2 解释

原序列已经按编号从小到大排列。无论选择哪些区间,整理后的序列都是 (1,2,3,4)(1,2,3,4),因此答案为 11。

数据范围与子任务

对于所有测试数据,保证1≤n≤2×1051\le n\le2\times10^5,pp 是 11 到 nn 的排列。

每个子任务内的正式测试全部通过,才获得该子任务的分数。

子任务编号 分值 额外限制
1 20 n≤10n\le10
2 n≤3000n\le3000
3 pi=n−i+1p_i=n-i+1
4 40 无额外限制