练琴记录
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
【题目背景】
小 Z 最近开始学琴,每天结束机房的训练后,都会练上一会儿.
几天下来,整首曲子还没学会,开头倒是已经不用看谱了.毕竟,每次练到不熟悉的地方,他总想退回去,再从头来一遍.
【题目描述】
曲谱上依次有 个音符,第 个音符的音高用整数 表示.数值越大,音越高.
小 Z 安排了 轮练习.第 轮,他会把曲谱开头的 个音符按原顺序弹奏 遍,每一遍都从曲谱的第一个音符开始.例如,将开头的两个音符 弹奏两遍,得到的是 .
第一轮只练习第一个音符,即 .之后每一轮,可以练习与上一轮相同或更短的一段,也可以比上一轮多练一个音符,即 .每轮至少练习一个音符,且不超过曲谱长度.各轮的 均已给定,练习顺序不能改变.
记录仪从练习开始就一直开着,按弹奏顺序记下了所有音符,得到序列 .即使某一轮练习的片段变短,之前的记录也不会被删除.曲谱本身始终不变.
请你统计,整份记录中有多少对音符,满足前面弹出的音比后面弹出的音高.这两个音符不必相邻,也可以来自不同轮练习.
也就是说,求满足 且 的下标对 的数量,对 取模.音高相同的两个音符不计入答案.
【输入描述】
第一行输入一个正整数 ,表示曲谱上的音符数量和练习轮数.
第二行输入 个整数 ,表示曲谱上各音符的音高.
接下来 行,第 行输入两个正整数 ,表示第 轮练习曲谱开头的 个音符,并将这一段弹奏 遍.
【输出描述】
输出一个整数,表示整份记录中符合要求的音符对数量对 取模后的结果.
【样例 1】
【样例 1 输入】
4
2 1 3 2
1 1
2 1
1 1
2 2
【样例 1 输出】
11
【样例 1 解释】
四轮练习分别弹奏了:
- 第一轮:.
- 第二轮:.
- 第三轮:.
- 第四轮:.
将它们依次记录下来,得到
第 、、 个元素均为 ,它们前面分别有 、、 个 ,因此答案为 .
第三轮只练习第一个音符,但前两轮的记录仍然保留.本次练习没有弹到曲谱的第 、 个音符,这是允许的.
【样例 2】
【样例 2 输入】
3
1 2 1
1 1
2 2
3 1
【样例 2 输出】
6
【样例 2 解释】
最终得到 .三个 的右侧分别有 、、 个 ,共构成 个逆序对.值相等的元素之间不计贡献.
【数据规模与约定】
对于所有数据,保证:
- .
- .
- .
- 令 ,有 .
- 所有输入均为整数.
记 ,即最终记录序列的长度.各子任务独立计分;通过一个子任务的全部测试点,才能获得该子任务的分数.
| 子任务编号 | 分值 | 额外限制 |
|---|---|---|
| 1 | 10 | |
| 2 | 15 | |
| 3 | ||
| 4 | 对所有 , | |
| 5 | 20 | 对所有 , |
| 6 | 25 | 无额外限制 |
下发样例
Data/sample1.in与Data/sample1.ans:题面中的样例 1.Data/sample2.in与Data/sample2.ans:题面中的样例 2.Data/sample3.in与Data/sample3.ans:满足子任务 3 的附加限制.Data/sample4.in与Data/sample4.ans:满足子任务 4 的附加限制.Data/sample5.in与Data/sample5.ans:满足子任务 5 的附加限制.Data/sample6.in与Data/sample6.ans:该样例无特殊限制.Data/sample7.in与Data/sample7.ans:该样例无特殊限制.Data/sample8.in与Data/sample8.ans:满足子任务 1 的附加限制.Data/sample9.in与Data/sample9.ans:满足子任务 2 的附加限制.