(1회차 시도 실패...)
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
long[] arr = new long[n];
long left = 0;
long right = 1;
for (int i = 0; i < n; i++) {
arr[i] = Integer.parseInt(br.readLine());
right = Math.max(right, arr[i]*m);
}
long ans = Long.MAX_VALUE;
Arrays.sort(arr);
while(left <= right){
long mid = (left + right) / 2;
long sum = 0;
for (int i = 0; i < n; i++) {
long tmp = mid / arr[i];
sum += tmp;
}
if(sum >= m){
right = mid - 1;
ans = Math.min(ans, mid);
}else{
left = mid + 1;
}
}
bw.write(ans+"");
br.close();
bw.close();
}
}
(2회차 시도 성공!)
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
long[] arr = new long[n];
long left = 1;
long right = 1;
for (int i = 0; i < n; i++) {
arr[i] = Integer.parseInt(br.readLine());
right = Math.max(right, arr[i]*m);
}
long ans = Long.MAX_VALUE;
Arrays.sort(arr);
while(left <= right){
long mid = (left + right) / 2;
long sum = 0;
for (int i = 0; i < n; i++) {
long tmp = mid / arr[i];
if(sum >= m){
break;
}
sum += tmp;
}
if(sum >= m){
right = mid - 1;
ans = Math.min(ans, mid);
}else{
left = mid + 1;
}
}
bw.write(ans+"");
br.close();
bw.close();
}
}