Информатика на языке программирования паскалт
Инженер Сулбуфий устроился на работу в крупную ІТ-компанию. В первый день работы ему поручили задание подключить патч-
корды к коммутатору в серверном шкафу. Коммутатор имеет очень много портов для подключений, однако расположены они все в одну линию.
Приступив к работе, Сулбуфий заметил на коммутаторе записку:
«Серверы подключены и работают, но после отключения могут не включиться. НЕ ОТКЛЮЧАТЬ! Удачи в подключении!».
Сулбуфий доверился старшему руководителю и не стал трогать уже подключенные патч-корды. Сулбуфий любит, когда провода аккуратно уложены. Сервер дает возможность заменить любой свободный порт на крепеж для фиксации патч-кордов.
Примечание: на место крепежа нельзя установить патч-корд. В наличии у Сулоуфия всего один крепеж, поэтому он хочет
подключить все патч-корды максимально близко к крепежу. Расстоянием между номерами і и і считается значение і — j].
Помогите Сулбуфию разместить патч-корды так, чтобы расстояние между самым удаленным патч-кордом и крепежом было минимальным.
Входные данные
В первой строке входных данных записаны два числа N и К (1 ≤ К < N < 10°) — количество портов для подключений и количество патч-кордов, которые необходимо подключить, соответственно.
Во второй строке записаны N символов, описывающие порты для подключения. Если і-й символ равен «О», то і-й порт свободен, а если «1». то занят (1 ≤ і < N). Гарантируется, что в коммутаторе есть как минимум К + 1 свободных портов, то есть
Сулбуфий точно может подключить и крепеж, и все патч-корды в коммутатор
Выходные данные
Выведите минимально возможное расстояние от самого дальнего патч-корда, который подключил Сулбуфий, до крепежа.
Ответы
Ответ:
program PatchCords;
var
N, K, i, j, distance, maxDistance: Integer;
ports: array of Char;
begin
// Ввод данных
Write('Введите количество портов и количество патч-кордов: ');
Readln(N, K);
SetLength(ports, N);
Write('Введите состояние портов (O - свободен, 1 - занят): ');
for i := 1 to N do
Read(ports[i]);
// Ищем максимальное расстояние между свободными портами
maxDistance := 0;
for i := 1 to N - K + 1 do
begin
distance := 0;
for j := i to i + K - 1 do
if ports[j] = 'O' then
distance := distance + i - j;
if distance > maxDistance then
maxDistance := distance;
end;
// Вывод результата
Writeln('Минимальное расстояние от самого дальнего патч-корда до крепежа: ', maxDistance);
end.
Объяснение:
Программа запрашивает у пользователя количество портов и количество патч-кордов, а затем вводит состояние портов. Она ищет максимальное расстояние между свободными портами, которое может использовать Сулбуфий для подключения крепежа и патч-кордов. Результат выводится на экран.