根据题意,考虑先相邻的数两两相减,计算差分数组(也就是增量数组)。
接下来问题变成求差分数组中最长的相等段。这个可以考虑用双指针获取。具体看代码实现~
小红和小堡正在玩一个游戏,每一关都有一个分数。如果某人某一关分数比上一关高,但另一个人这一关分数比上一关低,那么他就可以嘲笑对方。如果两个人这一关游戏的分数都比上一关多,则增量更多的可以嘲笑对方;如果两个人这一关游戏的分数都比上一关少,则减量更少的可以嘲笑对方。只有当他们的增量相同或者减量相同时,才不会互相嘲笑。
例如,假设小红第一关的分数为2,第二关的分数为8;小堡第一关的分数为5,第二关的分数为10,显然小红增加的比小堡多,那么小红就可以嘲笑小堡。
现在给定了小红和小堡每一关的分数,你可以选择一段连续的关卡,使得一段关卡中两个人都不会互相嘲笑,问最多可以选择多少个关卡。特别的一段连续关卡中的第一关两人不会互相嘲笑。
第一行输入一个正整数n,代表关卡数。
第二行输入n个整数ai,代表小红每一关的分数。
第三行输入n个整数bi,代表小堡每一关的分数。
2≤n≤105
−10≤ai,bi≤109
输出可以选择最多的关卡数。
输入
5
1 2 3 1 3
-1 0 3 -1 1
输出
2
说明
可以选择前两个数,[1,2]和[−1,0]相似,长度为2. 选择后两个数也是可以的。