1 /*
2 屋顶有n个洞,用k块板子覆盖所有洞,问最长的一块板子至少是多长。
3 二分长度,贪心的方式尝试覆盖,把每一块板子都放在刚好能覆盖最左边的洞的最右位置
4 从而判断某个长度的k块板子能否覆盖所有洞。
5 */
6 #include <bits/stdc++.h>
7 using namespace std;
8 int d[100010];
9 int main()
10 {
11 int t;
12 scanf("%d",&t);
13 while(t--)
14 {
15 int n,m;
16 scanf("%d%d",&n,&m);
17 for(int i=0;i<n;i++)
18 scanf("%d",&d[i]);
19 int l=0;
20 int r=d[n-1]/m+1;
21 while(l<=r)
22 {
23 int mid=l+(r-l)/2;
24 int x=d[0];
25 int cnt=1;
26 for(int i=1;i<n;i++)
27 {
28 if(d[i]>=x+mid)
29 {
30 x=d[i];
31 cnt++;
32 }
33 }
34 if(cnt>m)
35 l=mid+1;
36 else
37 r=mid-1;
38 }
39 printf("%d\n",r+1);
40 }
41 }