一段匀差脉冲就是下标连续的一段,相邻差对模 K 都相等。从左到右扫一遍,把相同变化量的极长段找出来即可。
航标站要把一晚的灯塔脉冲记到值班本上。一共记下 p 个读数 x1,x2,…,xp,每个读数都是模 K 意义下的非负整数。相邻两次脉冲的前向变化量定义为 (xi+1−xi)modK。
值班规则是:若一段连续读数里,每一对相邻变化量都相同,就看成一段匀差脉冲。请找出最长的匀差脉冲;如果有多段一样长,取起始下标最小的那一段。只有一个读数时,也把它当成一段,公共变化量记为 0。
第一行两个整数 p 和 K(1≤p≤200000,2≤K≤1000000000),表示读数个数与模数。
第二行 p 个整数 x1,x2,…,xp(0≤xi<K),表示各次脉冲读数。
输出三个整数:最长匀差脉冲的长度、左端点下标(从 1 开始),以及该段的公共变化量。
输入
5 10
0 2 4 7 0
输出
3 1 2
说明
前三个读数 0,2,4 的变化量都是 2,长度为 3。后三个 4,7,0 在模 10 下变化量都是 3,长度同样是 3,但起始更靠右,因此取左边这一段。
输入
1 5
3
输出
1 1 0
说明
只有一个读数,长度记 1,公共变化量记 0。
输入
6 9
2 2 2 5 8 2
输出
4 3 3
说明
前三个读数变化量为 0,长度为 3。从第 3 个读数起到末尾:2,5,8,2,模 9 下变化量都是 3,长度为 4,更长。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册