Под локальным максимумом, скорее всего, имеется в виду число, большее
чем оба его соседа, за исключением случая, когда соседом справа является
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.
Цвета: белый синий красный зелёный
Квадрат : белый синий красный зелёный
Круг: белый синий красный зелёный
Ромб: белый синий красный зелёный
Треугольник: белый синий красный зелёный
Круг не белый и не зелёный; Треугольник не синий и не зелёный
Квадрат : белый синий красный зелёный
Круг: синий красный
Ромб: белый синий красный зелёный
Треугольник: белый красный
Синяя фигура лежит между ромбом и красной фигурой.
Квадрат лежит между треугольником и белой фигурой
Ромб: белый
Квадрат : синий
Треугольник: красный
Круг: синий красный (Зелёный ? => Неверно)
Синяя фигура лежит между ромбом и красной фигурой.
Квадрат лежит между треугольником и белой фигурой
//Ромб
Квадрат : зелёный
Треугольник: красный
Круг: синий
Ромб: белый
Var
a,b,r:byte;
begin
randomize;
a:=Random(9)+1;
b:=Random(9)+1;
Write(a,' x ',b,' = ');
Readln(r);
if r=a*b then Writeln('Правильно!')
else Writeln('Вы ошиблись. Верный результат ',a*b)
end.
Думаю, что 10 питобайт - это 8 х 10^16