Под локальным максимумом, скорее всего, имеется в виду число, большее
чем оба его соседа, за исключением случая, когда соседом справа является
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<minr then minr:=curr; lastmax:=i; end; i1:=i2; i2:=i3; i+=1; until i2=0; if minr=1000000 then writeln(0) else writeln(minr); {стоило бы добавить булевую переменную в качестве флага - был ли хоть один max, но вряд ли расстояние между ними превысит миллион :-}end.