【题目背景】
河谷巡查结束后,众人在岸边整理一路带回的文字残卷。Pinewood 找到了一首记载归途的旧词,它的上下两阕已经散开,只留下彼此呼应的强弱音迹。
【题目描述】
这首旧词的上阕与下阕各有 n 个词节。上阕第 i 个词节的音迹强度为 ai,下阕第 j 个词节的音迹强度为 bj。全部 2n 个音迹强度两两不同。
旧谱要求将上阕与下阕的词节两两呼应。Pinewood 需要为每个上阕词节选择一个下阕词节,使每个下阕词节也恰好出现在一组配对中。
若一组配对中上阕词节的音迹更强,则称它为一组昂句,否则称它为一组抑句。一种编排中,若昂句的数量比抑句的数量恰好多 k,那么这首旧词便能够恢复原有的声律。
两种编排不同,当且仅当存在一个上阕词节,它们为这个词节选择了不同的下阕词节。残卷中没有留下更多配对信息,请你求出所有能够恢复声律的编排数量,答案对 998,244,353 取模。
形式化题意:给定两个长度为 n 的序列 a,b,统计满足
i=1∑n[ai>bpi]−i=1∑n[ai<bpi]=k
的排列 p 的数量,其中 [⋅] 表示 Iverson 括号。
【输入格式】
从文件 verse.in 中读入数据。
本题包含多组测试数据。
输入的第一行包含两个非负整数 c,T,分别表示测试点编号与测试数据的组数。c=0 表示该测试点为样例。
对于每组测试数据:
第一行包含两个整数 n,k,表示每阕的词节数量与要求的数量差。
第二行包含 n 个正整数 a1,a2,…,an,表示上阕词节的音迹强度。
第三行包含 n 个正整数 b1,b2,…,bn,表示下阕词节的音迹强度。
【输出格式】
输出到文件 verse.out 中。
对于每组测试数据输出一行一个整数,表示能够恢复声律的编排数量对 998,244,353 取模后的结果。
【样例 1 输入】
10 224 234 1 8 643 5 7 253 165 1 972 6 8
【样例 1 输出】
【说明/提示】
【样例 1 解释】
在第一组测试数据中,需要恰好出现 3 组昂句与 1 组抑句,共有 8 种合法编排。
【样例 2】
见选手目录下的 verse/verse2.in 和 verse/verse2.ans。
该组样例符合测试点 1∼4 的数据范围。
【样例 3】
见选手目录下的 verse/verse3.in 和 verse/verse3.ans。
该组样例符合测试点 5∼9 的数据范围。
【样例 4】
见选手目录下的 verse/verse4.in 和 verse/verse4.ans。
该组样例符合测试点 10∼14 的数据范围。
【样例 5】
见选手目录下的 verse/verse5.in 和 verse/verse5.ans。
该组样例符合测试点 15∼19 的数据范围。
【样例 6】
见选手目录下的 verse/verse6.in 和 verse/verse6.ans。
该组样例符合测试点 20∼25 的数据范围。
【数据范围】
对于 100% 的数据,保证 1≤T≤10,1≤n≤2×103,0≤k≤n,1≤ai,bi≤109,全部 ai,bi 两两不同。对于同一个测试点,保证 ∑n≤2×103。
特殊性质 A:保证 k=n。
特殊性质 B:将全部 2n 个音迹强度从小到大排序后,任意两个相邻音迹分别来自上阕与下阕。