由于我们只关注相邻点的距离。所以可以先对这些点排个序,然后算出一个相邻距离的数组b1,b2,b3
考虑一次交换操作,等价于对这个距离数组的某一个下标:i 以及它的下一个点(i+1)%3 一个加一个减。
最终目标: 使得b1,b2,b3≥k .
小红有一个纯白的环形纸带(首尾相连)。这个纸带被划分成n个格子。最开始,小红在纸带上选择了三个格子,把它染黑。
现在小红让你把他们通过移动操作把纸带变成平衡状态。
平衡状态:任意两个黑色格子的距离不小于k (相邻格子距离为1)
移动操作:交换相邻格子的颜色。
同时,小红是一个很注重效率的人,所以他希望你使用最少的移动次数使得纸带达到平衡。
第一行输入一个正整数t,代表询问次数。
每行为一次询问,输出五个正整数n,k,a1,a2,a3,分别代表纸带的格子数、要求的距离,以及三个黑色格子的初始位置。
1≤t≤104
1≤n≤109
1≤k,a1,a2,a3≤n
输出t行,每行输入一个整数,代表最小的交换次数。如果无法完成目的,则输出−1。
输入输出示例仅供调试,后台判题数据一般不包含示例
输入
3
5 1 1 2 3
5 2 1 2 3
6 2 2 3 6
输出
0
-1
1
说明
第一组样例,无需交换即可满足任意两个黑色格子的距离为1,输出0
第二组样例,由于相隔为2的情况下至少需要6个格子,则5个格子无论如何无法满足条件,输出-1
第三组样例,状态为:白黑黑白白黑。我们只需要交换一次变成白黑白黑白黑即可满足条件。输出1