uses crt;
const nmax=100;
type mas=array[1..nmax] of integer;
//создание неубывающего массива
procedure Massiv(var a:mas;var n:byte;c:char);
var i:byte;
begin
writeln('Массив ',c);
repeat
write('Размер массива до ',nmax,' =');
readln(n);
until n in [1..nmax];
a[1]:=random(5);//первое число от 0 до 4
write(a[1],' ');
for i:=2 to n do//остальные
begin
a[i]:=a[i-1]+random(5);//прибавляем от 0 до 4
write(a[i],' ');
end;
writeln;
writeln;
end;
//бинарный поиск элемента в упорядоченном по екубыванию массиве
function Poisk(a:mas;n:byte;k:integer):boolean;
var l,r,i:byte;
f:boolean;
c:integer;
begin
l:=1; r:=n;//начало и конец
f:=false;
while (l<=r)and (not f) do//пока не совпадут или не найдем
begin
c:=(l+r) div 2;//середина
if k<a[c] then r:=c-1//если искомое число меньше, правый край смещаем слева от середины
else if k>a[c] then l:=c+1//если больше, левый за середину
else f:=true;//если нашли
end;
Poisk:=f;
end;
//параллельный поиск в трех массивах
procedure Odin(a,b,c:mas;na,nb,nc:byte);
var i,j,k:byte;
f:boolean;
begin
f:=false;
i:=1;
while (i<=na)and not f do//пока не просмотрен первый массив или не нашли
if Poisk(b,nb,a[i])and Poisk(c,nc,a[i]) then//если есть в других
begin
f:=true;//меняем флаг
write('Одинаковое число есть, это ',a[i]);//выводим
end
else i:=i+1;//иначе вперед
if not f then write('Одинаковых чисел нет!');//дошли до конца и не нашли
end;
var x,y,z:mas;
p,q,r:byte;
begin
clrscr;
Massiv(x,p,'X');
Massiv(y,q,'Y');
Massiv(z,r,'Z');
Odin(x,y,z,p,q,r);
readln
end.