把每次“手动染黑”看成在时间点 t
出现的一个“源点” a_t
。
第 t+1, t+2, …
秒的开始,这个源点会以每秒 1 格的速度向左右扩散。因此,到第 T
秒结束时,这个源点能覆盖的区间为
有一条长度为n的一维网格(编号为1~n)。初始时,所有网格均为白色。从第1~m秒,每一秒结束前会给出一个整数at,表示将编号为at的网格手动染成黑色。
同时,过程按秒进行、且在m秒之后也继续进行:在每一秒开始时,所有已经为黑色的网格会同时将其左右相邻(编号相差为1)的白色网格染成黑色(若相邻位置不存在则忽略)。
请计算:最少经过多少秒结束时,所有网格都被染成黑色。
更明确的时间线(同一秒内按如下顺序执行):
在t>m时不再有手动染色,但“每秒开始时的扩散”仍持续进行,直到全体网格变黑为止。
你需要输出满足“在第t秒结束时全黑”的最小t。
每个测试文件均包含多组测试数据。第一行输入一个整数 T(1≦T≦104)代表数据组数,每组测试数据描述如下:
第一行输入两个整数n,m(1≦n≦109;1≦m≦2×105)表示网格长度与手动染色的次数;
第二行输入m个整数a1,a2,...,am(1≦ai≦n)表示第t秒结束前手动染黑的网格编号。
除此之外,保证单个测试文件的m之和不超过2×105。
对于每一组测试数据,新起一行,输出一个整数,表示在第t秒结束时全体网格变黑所需的最少秒数
输入
2
5 1
3
10 2
2 9
输出
3
5
说明
初始全白。
对于样例一:
对于样例二: