uses crt;
const nmax=100;
type mas=array[1..nmax] of integer;
procedure Vvod(var v:mas;var x:byte;c:char);
var i:byte;
begin
writeln('Массив ',c);
repeat
write('Размер массива до ',nmax div 2,' =');
readln(x);
until x in [1..nmax div 2];
for i:=1 to x do
begin
v[i]:=random(20)-9;
write(v[i]:3);
end;
writeln;
writeln;
end;
var a,b,c:mas;
na,nb,nc,i,j,k:byte;
x:integer;
begin
clrscr;
randomize;
Vvod(a,na,'A');
Vvod(b,nb,'B');
nc:=0;
{неотрицательные из массива А}
for i:=1 to na do
if a[i]>=0 then
begin
inc(nc);
c[nc]:=a[i];
end;
{неотрицательные из массива В}
for i:=1 to nb do
if b[i]>=0 then
begin
inc(nc);
c[nc]:=b[i];
end;
{сортируем по убыванию}
for i:=1 to nc-1 do
for j:=i+1 to nc do
if c[i]<c[j] then
begin
x:=c[i];
c[i]:=c[j];
c[j]:=x;
end;
{отрицательные из массва А в прямом порядке}
for i:=1 to na do
if a[i]<0 then
begin
inc(nc);
c[nc]:=a[i];
end;
{отрицательные из массва В в обратном порядке}
for i:=nb downto 1 do
if b[i]<0 then
begin
inc(nc);
c[nc]:=b[i];
end;
writeln('Объединенные массивы:');
for i:=1 to nc do
write(c[i]:3);
readln
end.