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

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

Ответ:
zalina59
zalina59
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
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?