CFCF2190E.Median Permutation

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

对于一个长度为 m3m \ge 3 的排列 qq,定义 f(q)f(q) 为一个长度为 m2m-2 的序列 bb,其中对于所有 1im21 \le i \le m-2,都有 bi=med(qi,qi+1,qi+2)b_i = \operatorname{med}(q_i, q_{i+1}, q_{i+2})。这里,med(x,y,z)\operatorname{med}(x, y, z) 表示 {x,y,z}\{x, y, z\} 中的第二小元素。

给定一个长度为 nn 的数组 aa,其中有些元素可能为 00。保证 aa 中包含 11nn,即存在下标 i,ji, j 使得 ai=1a_i = 1 并且 aj=na_j = n

请你计算有多少个满足以下条件的长度为 nn 的排列 pp

  • ppaa 一致:对于所有 1in1 \le i \le n,如果 ai0a_i \neq 0,则 pi=aip_i = a_i
  • f(p)f(p) 的所有元素都互不相同。

由于答案可能很大,请输出对 998244353998\,244\,353 取模的结果。

^{\text{∗}}排列指长度为 nn 的、包含 11nn 且各不相同的数的序列。例如,[2,3,1,5,4][2,3,1,5,4] 是一个排列,但 [1,2,2][1,2,2] 不是(22 出现了两次),[1,3,4][1,3,4] 也不是(n=3n=3 却出现了 44)。

输入格式

每组测试包含多组数据。第一行包含测试组数 tt1t1041 \le t \le 10^4)。以下是每组测试的数据。

每组测试的第一行包含一个整数 nn,表示数组的长度(3n21053 \le n \le 2 \cdot 10^5)。

第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \ldots, a_n0ain0 \le a_i \le n)。

保证 aa 中所有非零元素均互不相同,且 aa 中一定包含 11nn

保证所有测试数据中 nn 之和不超过 21052 \cdot 10^5

输出格式

对于每组测试数据,输出一行一个整数,表示满足条件的排列 pp 的个数,对 998244353998\,244\,353 取模。

输入输出样例

  • 输入#1

    5
    3
    1 3 2
    5
    0 5 4 1 0
    7
    0 0 1 0 0 7 0
    10
    1 10 0 0 0 0 0 0 0 0
    15
    0 0 10 0 0 15 0 0 6 7 0 1 0 0 3

    输出#1

    1
    0
    10
    1
    4

说明/提示

在第一个样例中,唯一与输入一致的排列是 p=[1,3,2]p=[1,3,2]。有 f(p)=[2]f(p)=[2],因为 med(1,3,2)=2\operatorname{med}(1,3,2)=2f(p)f(p) 的元素互不相同,因此这个排列是合法的。答案为 11

在第二个样例中,有两种与输入一致的排列:p=[3,5,4,1,2]p=[3,5,4,1,2]p=[2,5,4,1,3]p=[2,5,4,1,3]

  • 对于 p=[3,5,4,1,2]p=[3,5,4,1,2],有 f(p)=[4,4,2]f(p)=[4,4,2]
  • 对于 p=[2,5,4,1,3]p=[2,5,4,1,3],有 f(p)=[4,4,3]f(p)=[4,4,3]

在这两种情况下,f(p)f(p) 中值 44 出现了两次。因此没有合法排列,答案是 00

首页