Вопрос, который вызвал трудности
Определите наименьшее расстояние между двумя локальными максимумами последовательности натуральных чисел, завершающейся числом 0. Если в последовательности нет двух локальных максимумов, выведите число 0.
Начальное и конечное значение при этом локальными максимумами не считаются.
Pascal или Python
Ответ экспертов Учись.Ru
Чтобы дать полноценный ответ, был привлечён специалист, который хорошо разбирается в теме «Информатика». Ваш вопрос звучал так: Определите наименьшее расстояние между двумя локальными максимумами последовательности натуральных чисел, завершающейся числом 0. Если в последовательности нет двух локальных максимумов, выведите число 0.
Начальное и конечное значение при этом локальными максимумами не считаются.
Pascal или Python
После обсуждения с другими специалистами сервиса мы пришли к выводу, что правильный ответ на ваш вопрос будет звучать следующим образом:
Под локальным максимумом, скорее всего, имеется в виду число, большее чем оба его соседа, за исключением случая, когда соседом справа является 0. В таком случае достаточно однократно пройтись по всем числам, запоминая минимальное из расстояний между новым и предыдущим обнаруженными максимумами.
Программа (язык Pascal ABC.Net)
var i1,i2,i3:integer;
i:integer;
curr,minr,lastmax:integer;
begin
readln(i1,i2);
i:=2;
minr:=1000000;
repeat
readln(i3);
if (i2>i1) and (i2>i3) and (i3<>0) then begin
curr:=i-lastmax;
if curr lastmax:=i;
end;
i1:=i2;
i2:=i3;
i+=1;
until i2=0;
if minr=1000000 then writeln(0) else writeln(minr); {стоило бы добавить булевую переменную в качестве флага - был ли хоть один max, но вряд ли расстояние между ними превысит миллион :-}
end.