Ответ:
program cyclist2;
const
Am1: array [0..1] of Integer = (50, 10); // график движения 1-го
Av1: array [0..1] of Real = (0.2, 0); // скорость 1-го (0 - стоит на месте, отдыхает, 12 км/ч = 12/60 = 0.2 км/мин)
Am2: array [0..1] of Integer = (20, 10); // график движения 2-го
Av2: array [0..1] of Real = (0.3, 0); // скорость 2-го (0 - стоит на месте, отдыхает, 18 км/ч = 18/60 = 0.3 км/мин)
var
m, m1, m2, p1, p2: Integer;
n, n1, n2: Real;
begin
Write ('Введите N: ');
ReadLn (n);
WriteLn;
m := 0; // счетчик минут
p1 := 0; // текущий график 1-го
p2 := 0; // текущий график 2-го
m1 := Am1 [p1]; // начальное значение счетчика минут в графике 1-го
m2 := Am2 [p2]; // начальное значение счетчика минут в графике 2-го
n1 := 0; // пройденное рассстояние 1-го
n2 := 0; // пройденное рассстояние 2-го
while (n1 + n2) < n - 0.001 do begin // проверка на истинность встреци. 0.001 для корректировки погрешность вычислений с Real
Inc (m); // следующая минута
Dec (m1); // уменьшаем длительность графика 1-го
n1 := n1 + Av1 [p1]; // расчет пройденного расстояния
if m1 <= 0 then begin // если период в графике закончился, то
if p1 = 0 then p1 := 1 else p1 := 0; // изменяем период
m1 := Am1 [p1]; // устанавливаем длительность графика
end;
Dec (m2); // то же делаем для 2-го
n2 := n2 + Av2 [p2];
if m2 <= 0 then begin
if p2 = 0 then p2 := 1 else p2 := 0;
m2 := Am2 [p2];
end;
// WriteLn (m :5, n1 :5 :1, n2 :5 :1, n1 + n2 :5 :1); // это для отладки, чтобы посмотреть движение по минутам - раскомментировать
end;
WriteLn ('Через ', m, ' минут велосипедисты встретятся.');
ReadLn;
end.
Объяснение: комментарии в программе