Под локальным максимумом, скорее всего, имеется в виду число, большее
чем оба его соседа, за исключением случая, когда соседом справа является
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.
128•28•64•8=1835008 бит=229376 байт=224 мбайт
Ответ:224
Program z;
var x,max,n,k:integer;
begin
x:=-1;
max:=-1;
n:=0;
k:=0;
while x<>0 do
begin
readln(x);
k:=k+1;
if x>max then begin max:=x; n:=k; end;
end;
writeln(n);
end.
read(n);
if (n>99) and (n<1000) then writeln('Yes');
4, т.к. это единственное, что размещается на процессоре и имеет более быстрый доступ, чем ОЗУ