nq1s788

Коровы -- в стойла

Oct 5th, 2025
200
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.71 KB | None | 0 0
  1. Это классическая задача на бинарный поиск по ответу. Бинарным поиском будем искать x -- ограничение на расстояние между коровами (каждое расстояние должно быть >= x). В таком случае, максимальное x при котором мы можем рассадить достаточно коров и будет максимальным возможным наименьшим расстоянием.
  2. Проверить, можем ли мы рассадить достаточно коров при ограничении в расстоянии x, можно линейно. Посчитаем, сколько максимально коров мы можем посадить при таком ограничении: поставим первую корову в первое стойло, вторую корову в первое последующее стоило, до которого расстояние от первого будет >= x, и тд. Если мы таким образом смогли рассадить >= k коров, значит такое x нам подходит и можем попробовать найти x больше. Иначе будем искать x среди меньших.
  3.  
  4. Пример кода на python:
  5. n, k = map(int, input().split())
  6. a = list(map(int, input().split()))
  7. l = 0
  8. r = 1000000000
  9. while r - l > 1:
  10.     x = (r + l) // 2
  11.     cnt = 1
  12.     lst = a[0]
  13.     for i in range(1, n):
  14.         if a[i] - lst >= x:
  15.             lst = a[i]
  16.             cnt += 1
  17.     if cnt >= k:
  18.         l = x
  19.     else:
  20.         r = x
  21. print(l)
Advertisement
Add Comment
Please, Sign In to add comment