二分答案的大小,每个木棍最多变成 $\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()

京公网安备 11010502036488号