import java.util.*;
class MinK {
static boolean check(int k, ArrayList<Integer> b, int d) {
int n = b.size();
int sum_moves = 0;
for(int i = 0; i < n; i++) {
if(b.get(i) % k == 0) {
sum_moves += b.get(i) / k;
} else {
sum_moves += (b.get(i) / k) + 1;
}
}
return sum_moves <= d;
}
public static void main
(String[] args
) { Scanner scanner
= new Scanner
(System.
in); int n = scanner.nextInt();
int d = scanner.nextInt();
ArrayList<Integer> b = new ArrayList<>();
for (int i = 0; i < n; i++) {
b.add(scanner.nextInt());
}
int left = 1; // Minimum possible value of k
int right
= Collections.
max(b
); // Maximum possible value of k int answer = right; // Initialize answer to maximum
while (left <= right) {
int mid = (left + right) / 2;
if (check(mid, b, d)) {
answer = mid; // Update answer if valid
right = mid - 1; // Try for a smaller k
} else {
left = mid + 1; // Increase k
}
}
}
}
aW1wb3J0IGphdmEudXRpbC4qOwoKY2xhc3MgTWluSyB7CiAgICAKICAgIHN0YXRpYyBib29sZWFuIGNoZWNrKGludCBrLCBBcnJheUxpc3Q8SW50ZWdlcj4gYiwgaW50IGQpIHsKICAgICAgICBpbnQgbiA9IGIuc2l6ZSgpOwogICAgICAgIGludCBzdW1fbW92ZXMgPSAwOwogICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICAgICAgaWYoYi5nZXQoaSkgJSBrID09IDApIHsKICAgICAgICAgICAgICAgIHN1bV9tb3ZlcyArPSBiLmdldChpKSAvIGs7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBzdW1fbW92ZXMgKz0gKGIuZ2V0KGkpIC8gaykgKyAxOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBzdW1fbW92ZXMgPD0gZDsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICAgICAgU2Nhbm5lciBzY2FubmVyID0gbmV3IFNjYW5uZXIoU3lzdGVtLmluKTsKICAgICAgICBpbnQgbiA9IHNjYW5uZXIubmV4dEludCgpOwogICAgICAgIGludCBkID0gc2Nhbm5lci5uZXh0SW50KCk7CgogICAgICAgIEFycmF5TGlzdDxJbnRlZ2VyPiBiID0gbmV3IEFycmF5TGlzdDw+KCk7CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICAgICAgYi5hZGQoc2Nhbm5lci5uZXh0SW50KCkpOwogICAgICAgIH0KCiAgICAgICAgaW50IGxlZnQgPSAxOyAvLyBNaW5pbXVtIHBvc3NpYmxlIHZhbHVlIG9mIGsKICAgICAgICBpbnQgcmlnaHQgPSBDb2xsZWN0aW9ucy5tYXgoYik7IC8vIE1heGltdW0gcG9zc2libGUgdmFsdWUgb2YgawogICAgICAgIGludCBhbnN3ZXIgPSByaWdodDsgLy8gSW5pdGlhbGl6ZSBhbnN3ZXIgdG8gbWF4aW11bQoKICAgICAgICB3aGlsZSAobGVmdCA8PSByaWdodCkgewogICAgICAgICAgICBpbnQgbWlkID0gKGxlZnQgKyByaWdodCkgLyAyOwogICAgICAgICAgICBpZiAoY2hlY2sobWlkLCBiLCBkKSkgewogICAgICAgICAgICAgICAgYW5zd2VyID0gbWlkOyAvLyBVcGRhdGUgYW5zd2VyIGlmIHZhbGlkCiAgICAgICAgICAgICAgICByaWdodCA9IG1pZCAtIDE7IC8vIFRyeSBmb3IgYSBzbWFsbGVyIGsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGxlZnQgPSBtaWQgKyAxOyAvLyBJbmNyZWFzZSBrCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihhbnN3ZXIpOwogICAgfQp9Cg==