#CF2138D. 安蒂亚穆尼与滑块移动
安蒂亚穆尼与滑块移动
题目描述
安蒂亚穆尼在一条长度为 的一维轨道上操控 个滑块。 每个滑块占用恰好 个单位位置,初始所有滑块位置互不相同。 滑块编号为 ,按从左至右顺序排列,第 个滑块初始位置为 。
给定 次操作,每次操作给出两个整数 (): 将第 个滑块移动到位置 。
移动规则: 若本次移动与其他滑块发生碰撞(滑块当前位置与目标位置之间存在其他滑块), 被阻挡的滑块会被同向推动 个单位; 该挤压会产生连锁反应,连续推动后续滑块,直到所有滑块位置互不重叠。
重要性质: 所有操作不会改变滑块的相对左右次序; 原本左数第 个滑块,操作后仍然是左数第 个。 同时题目对 的范围限制,保证所有滑块始终合法停留在轨道 范围内。
举例说明
初始滑块位置: 将第 个滑块移动到位置 :
- 挤压第 个滑块:
- 连锁挤压第 个滑块: 最终滑块位置:。
现已知全部 条操作,但操作执行顺序未知。 需要考虑 种操作的全排列执行顺序: 对于长度为 的任意操作排列 , 从初始位置 开始,依次执行 。
定义: :以排列 的顺序执行所有操作后,第 个滑块的最终位置。
你的任务: 对每个滑块 ,求出所有 种排列下 的总和; 答案对 取模。
补充定义
长度为 的排列:由 全部整数各出现一次构成的序列。
输入格式
多组测试数据。 第一行输入测试组数 ()。
每组测试数据:
- 第一行三个整数 依次表示:滑块数量、轨道总长、操作次数。
- 第二行 个严格递增整数 ,代表各滑块初始位置。
- 接下来 行,每行两个整数 ,代表一次移动操作。
数据约束: 所有测试数据的 ,。
输出格式
每组测试数据输出 个整数, 第 个数表示第 个滑块在全部排列下的位置总和,对 取模。
样例输入
3
5 10 3
1 3 5 7 9
5 6
2 6
1 4
5 10 5
2 3 5 7 9
1 6
4 7
3 3
5 7
4 9
3 1000000000 3
1 10 253746392
3 100000000
3 1000000000
3 500000000
样例输出
18 29 35 41 47
340 460 580 930 1090
6 60 199999979
样例说明(第一组)
,总共有 种操作排列。 以一号滑块为例: 六种排列最终位置: 求和:
其余滑块求和规则一致。
