l=1 , r= 가장 긴 랜선 길이로 이분탐색 진행해서 만들 수 있는 랜선 개수를 확인한다.
n 이상이면 l=mid+1 미만이면 r=mid-1
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
// System.out.println(new Solution().solution(names, fees));
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
st=new StringTokenizer(br.readLine());
int k=Integer.parseInt(st.nextToken());
int n=Integer.parseInt(st.nextToken());
int[] arr=new int[k];
int max=0;
for(int i=0;i<k;i++){
arr[i]=Integer.parseInt(br.readLine());
max= Math.max(max, arr[i]);
}
long l=1,r=max;
long ans=0;
while(l<=r){
long mid=(l+r)>>1;
long cnt=0;
for(int i=0;i<k;i++)cnt+=arr[i]/mid;
if(cnt>=n){
ans=mid;
l=mid+1;
}
else r=mid-1;
}
System.out.println(ans);
}
}
#이분탐색