Под локальным максимумом, скорее всего, имеется в виду число, большее
чем оба его соседа, за исключением случая, когда соседом справа является
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.