#C1003. 分拣带调度
分拣带调度
题目描述
小 S 负责维护一条自动分拣带。分拣带可以看作一条数轴,分拣带上有 个包裹与 个分拣口。所有包裹和分拣口所在的位置均为整数且互不相同。对于每个 (),从左到右第 个包裹的位置为 。对于每个 (),从左到右第 个分拣口的位置为 。
小 S 可以以任意顺序重复以下两种操作:
- 使所有尚未被分拣的包裹的位置都减 ;
- 使所有尚未被分拣的包裹的位置都加 。
每当某个包裹与某个分拣口位于同一位置时,该包裹会立刻进入这个分拣口,并从分拣带上消失。小 S 会不断操作,直到所有包裹都被分拣。
所有包裹都被分拣后,每个包裹分别进入哪个分拣口的方案有多少种?请输出答案对 取模后的结果。
若存在至少一个包裹进入的分拣口不同,则认为两个方案不同。
输入格式
输入的第一行包含两个正整数 ,分别表示包裹数量和分拣口数量。
输入的第二行包含 个正整数 ,表示从左到右每个包裹的初始位置。
输入的第三行包含 个正整数 ,表示从左到右每个分拣口的位置。
输出格式
输出一行一个整数,表示所有包裹进入分拣口的不同方案数对 取模后的结果。
样例1输入
2 2
2 3
1 4
样例1输出
3
样例1解释
从左到右第 个包裹称为包裹 ,从左到右第 个分拣口称为分拣口 。
可能的方案有以下 种:
- 包裹 进入分拣口 ,包裹 进入分拣口 ;
- 包裹 进入分拣口 ,包裹 进入分拣口 ;
- 包裹 进入分拣口 ,包裹 进入分拣口 。
样例2
见选手目录下的 sort/sort2.in 与 sort/sort2.ans。
该样例满足子任务 的约束条件。
样例3
见选手目录下的 sort/sort3.in 与 sort/sort3.ans。
该样例满足子任务 的约束条件。
样例4
见选手目录下的 sort/sort4.in 与 sort/sort4.ans。
该样例满足子任务 的约束条件。
样例5
见选手目录下的 sort/sort5.in 与 sort/sort5.ans。
该样例满足子任务 的约束条件。
样例6
见选手目录下的 sort/sort6.in 与 sort/sort6.ans。
该样例满足子任务 的约束条件。
样例7
见选手目录下的 sort/sort7.in 与 sort/sort7.ans。
该样例满足子任务 的约束条件。
数据范围
对于所有测试数据,均有:
- ;
- ;
- ;
- 所有 与 两两不同。
若包裹 满足 ,则定义
对于不在任意两个相邻分拣口之间的包裹,不定义 。
| 子任务编号 | 分值 | 约束条件 |
|---|---|---|
| 定义了 的包裹所对应的不同二元组 的数量不超过 | ||
| 无额外限制 |
本题采用捆绑测试。每个子任务内的测试点必须全部通过,才能获得该子任务分数。