二分答案的大小,每个木棍最多变成 $\left\lfloor \frac{自身长度}{当前答案} \right\rfloor$ 根小木棍

import sys
import math
import queue
import itertools
import heapq
from collections import deque
from array import array
from bisect import bisect_right

# from dataclasses import dataclass
sys.setrecursionlimit(1145141919)
input = sys.stdin.readline


def read():
    line = sys.stdin.readline()
    if not line:
        return []
    return list(map(int, line.split()))


def readf():
    line = sys.stdin.readline()
    if not line:
        return []
    return list(map(float, line.split()))


mod = 10**9 + 7
inf = 10**18
MOD = 998244353
N = 2 * (10**5) + 5


def solve():
    n, k = read()
    a = read()

    def check(mid):
        ans = 0
        for x in a:
            ans += x // mid
        return ans >= k

    l, r, ans = 1, inf, 0
    while l <= r:
        mid = l + r >> 1
        if check(mid):
            ans = mid
            l = mid + 1
        else:
            r = mid - 1
    print(ans)


def main():
    t = 1
    # t = int(sys.stdin.readline())
    for _ in range(t):
        solve()


if __name__ == "__main__":
    main()