ERROR IS COMMING ( runguard: warning: timelimit exceeded (wall time): aborting command runguard: warning: command terminated with signal 15)

package InterviewQuestions;
import java.util.*;
public class AggressiveCows {

public static void main(String[] args) {
	// TODO Auto-generated method stub
	Scanner sc = new Scanner(System.in);
	int n = sc.nextInt();
	int tc = sc.nextInt();
	int[] arr = new int[n];
	for(int i = 0; i< n; i++) 
		arr[i] = sc.nextInt();
	Arrays.sort(arr);
	System.out.println(binarySearch(arr, n,tc));
	
}

public static int binarySearch(int[] arr, int n, int tc) {
	int lo = 1;
	int hi = arr[n-1]-arr[0];
	int mid = hi + (lo-hi)/2;
	int ans = -1;
	while(lo <= hi) {
		if(isvalid(arr, mid, tc)) {
			ans = mid;
			lo = mid+ 1;
			
		}
		else {
			hi = mid - 1;
			
		}
	}
	return ans;
}

public static boolean isvalid(int[] arr, int mid, int tc) {
	
	int cordinate = arr[0];
	int nc = 1;
	for(int i = 1; i < arr.length; i++) {
		if(arr[i] - cordinate >= mid) {
			nc++;
			cordinate = arr[i];
			
				if(nc == tc)
				return true;
		}
	}
	return false;
	
	
	
	
	
}

}