uses crt;
const nmax=20;
var a:array[1..nmax,1..nmax] of real;
n,i,j,L,R,m:byte;
x:real;
begin
clrscr;
randomize;
repeat
write('Размер матрицы=');
readln(n);
until n in [1..nmax];
writeln('Исходная матрица:');
for i:=1 to n do
begin
for j:=1 to n do
begin
a[i,j]:=10*random;
write(a[i,j]:5:1);
end;
writeln;
end;
writeln;
for i:=2 to n do
begin
x:=a[i,n-i+1];
L:=1; R:=i;
while L<R do
begin
m:=(L+R) div 2;
if a[m,n-m+1]<=x then L:=m+1
else R := m;
end;
for j:=i downto R+1 do a[j,n-j+1]:=a[j-1,n-j+2];
a[R,n-R+1]:=x;
end;
writeln('Результат:');
for i:=1 to n do
begin
for j:=1 to n do
if j=n-i+1 then
begin
textcolor(12);
write(a[i,j]:5:1);
end
else
begin
textcolor(15);
write(a[i,j]:5:1);
end ;
writeln;
end;
readln
end.