Выведите минимальный радиус освещения d, который необходим, чтобы осветить всю улицу - Free Pascal
Формулировка задачи:
Помогите решить задачу:
Ваня идет поздней ночью по прямолинейной улице длины l, которая освещается n фонарями. Введём систему координат, в которой начало улицы соответствует точке 0, а её конец — точке l. Тогда i-й фонарь находится в точке ai. Фонарь освещает все точки улицы, которые находятся от него на расстоянии не больше d, где d — некоторое положительное число, общее для всех фонарей.
Ваня хочет узнать, какой минимальный радиус освещения d должен быть у фонарей, чтобы вся улица была освещена.
Входные данные
В первой строке записаны два целых числа n, l (1 ≤ n ≤ 1000, 1 ≤ l ≤ 109) — количество фонарей и длина улицы соответственно. В следующей строке записано n целых чисел ai (0 ≤ ai ≤ l). Несколько фонарей могут находиться в одной точке. Фонари могут находиться в концах улицы.Выходные данные
Выведите минимальный радиус освещения d, который необходим, чтобы осветить всю улицу. Ответ будет считаться правильным, если его абсолютная или относительная погрешность не превышает 10 - 9Примеры тестов
входные данные
7 15 15 5 3 7 9 14 0выходные данные
2.5000000000входные данные
2 5 2 5выходные данные
2.0000000000Примечание
Рассмотрим второй пример. При d = 2 первый фонарь будет освещать отрезок [0, 4] улицы, а второй — отрезок [3, 5]. Таким образом, вся улица будет освещена.Решение задачи: «Выведите минимальный радиус освещения d, который необходим, чтобы осветить всю улицу»
textual
Листинг программы
const mn=1000; var a: array [1..mn] of Longint; l, t: Longint; n, i, j: Integer; begin ReadLn(n,l); for i:=1 to n do begin Read(a[i]); for j:=i downto 2 do if a[j-1]>a[j] then begin t:=a[j-1]; a[j-1]:=a[j]; a[j]:=t; end else Break; end; t:=0; for i:=2 to n do if t<a[i]-a[i-1] then t:=a[i]-a[i-1]; if t<2*a[1] then t:=2*a[1]; if t<2*(l-a[n]) then t:=2*(l-a[n]); WriteLn(t/2:0:1); end.
Объяснение кода листинга программы
- Объявлены следующие константы и переменные: — mn=1000 - количество элементов в массиве; — l, t = 0 - счетчик количества элементов, используемых для расчета минимального радиуса освещения; — n, i, j = 0 - счетчики количества элементов для обработки массива.
- Считывается количество элементов массива и первый элемент массива.
- Для каждого элемента массива выполняется следующая последовательность действий: — считывается элемент массива; — выполняется сортировка массива по возрастанию с использованием алгоритма сортировки пузырьком; — если отсортированный массив уже полностью отсортирован (достигнут конец массива), то сортировка завершена.
- Находится минимальное значение разности между соседними элементами массива.
- Если минимальное значение разности меньше двухкратного значения первого элемента массива, то считается, что освещение требуется только для части улицы, и вычисляется минимальный радиус освещения как половина минимального значения разности.
- Если минимальное значение разности больше двухкратного значения первого элемента массива, то считается, что освещение требуется для всей улицы, и вычисляется минимальный радиус освещения как двукратное значение разности между последним и предпоследним элементами массива.
- Выводится значение минимального радиуса освещения.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д