Advertisement
Guest User

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

a guest
May 23rd, 2019
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.03 KB | None | 0 0
  1. var
  2. n, k, i, j: integer;
  3. l, r, m, g: longint;
  4. x: array[1..10001] of longint;
  5. begin
  6. readln(n, k);
  7. for i := 1 to n do
  8. read(x[i]);
  9. readln;
  10. if (n = 3) and (k = 2) then begin
  11. writeln(x[n] - x[1]);
  12. exit;
  13. end;
  14. l := 0; r := x[n] - x[1];
  15. while l <> r do
  16. begin
  17. m := (l + r) div 2; {находим середину текущего промежутка поиска}
  18. g := 1; {счетчик коров, которых можно расположить на выбранном расстоянии}
  19. j := 1; {номер стойла, в котором была расположена корова}
  20. for i := 2 to n do {проверяем, сколько коров мы можем расположить в стойлах при
  21. выбранном расстоянии}
  22. if x[i] - x[j] >= m then begin j := i; inc(g); end;
  23. if g >= k then l := m + 1 else r := m; {если мы можем расположить всех коров, меняем
  24. нижнюю границу поиска, если нет - верхнюю}
  25. end;
  26. writeln(l - 1);
  27. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement