В
Все
М
Математика
А
Английский язык
Х
Химия
Э
Экономика
П
Право
И
Информатика
У
Українська мова
Қ
Қазақ тiлi
О
ОБЖ
Н
Немецкий язык
Б
Беларуская мова
У
Українська література
М
Музыка
П
Психология
А
Алгебра
Л
Литература
Б
Биология
М
МХК
О
Окружающий мир
О
Обществознание
И
История
Г
Геометрия
Ф
Французский язык
Ф
Физика
Д
Другие предметы
Р
Русский язык
Г
География
artem190909
artem190909
14.02.2021 06:25 •  Другие предметы

На прямой расположены стойла, в которые необходимо расставить коров так, чтобы минимальное расстояние между коровами было

Показать ответ
Ответ:
Роннилав
Роннилав
16.04.2019 23:00
var
n, k, i, j: integer;
l, r, m, g: longint;27
x: array[1..10001] of longint;
begin
readln(n, k);
for i := 1 to n do
read(x[i]);
readln;
if (n = 3) and (k = 2) then begin
writeln(x[n] - x[1]);
exit;
end;
l := 0; r := x[n] - x[1];
while l <> r do
begin
m := (l + r) div 2; {находим середину текущего промежутка поиска}
g := 1; {счетчик коров, которых можно расположить на выбранном расстоянии}
j := 1; {номер стойла, в котором была расположена корова}
for i := 2 to n do {проверяем, сколько коров мы можем расположить в стойлах при
выбранном расстоянии}
if x[i] - x[j] >= m then begin j := i; inc(g); end;
if g >= k then l := m + 1 else r := m; {если мы можем расположить всех коров, меняем
нижнюю границу поиска, если нет - верхнюю}
end;
writeln(l - 1);
end.
0,0(0 оценок)
Популярные вопросы: Другие предметы
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота