1187: 求和
Description
一条狭长的纸带被均匀划分出了 n 个格子,格子编号从 1 到 n。每个格子上都染了一种颜色(用[1,m]当中的一个整数表示),并且写了一个数字number。
定义一种特殊的三元组:(x y z),其中 x,y,z 都代表纸带上格子的编号,这里的三元组要求满足以下两个条件:
1. x,y,z都是整数, x<y<z,y-x=z-y
2. x的颜色和z的颜色相同
满足上述条件的三元组的分数规定为(x + z) ∗(number[x]+number[z] )。整个纸带的分数规定为所有满足条件的三元组的分数的和。
这个分数可能会很大,你只要输出整个纸带的分数除以10007所得的余数即可。
Input
第二行有n个正整数,第i个数字代表纸带上编号为i的格子上面写的数字。
第三行有n个正整数,第i个数字代表纸带上编号为i的格子染的颜色。
Output
Sample Input Copy
15 4
5 10 8 2 2 2 9 9 7 7 5 6 4 2 4
2 2 3 3 4 3 3 2 4 4 4 4 1 1 1
Sample Output Copy
1388
HINT
【输入输出样例1】
sum.in
sum.out
5
5
3
2
2
2
5
5
3
2
2
2
6 2
5 5 3 2 2 2
2 2 1 1 2 1
82
【输入输出样例说明】
所有满足条件的三元组为:(1,3,5),(4,5,6)。
所以纸带的分数为(1+5)*(5+2)+(4+6)*(2+2)=42+40=82。
对于20%的数据,1≤n≤100,1≤m≤5。
对于40%的数据,1≤n≤3000,1≤m≤100。
对于60%的数据,1≤n≤100000,1≤m≤100000,且不存在出现次数超过20的颜色。
对于100%的数据,1≤n≤100000,1≤m≤100000,1≤color[i]≤m,1≤number[i]≤100000。