uses crt;
const nmax=100;
type mas=array[1..nmax] of integer;
procedure SortVoz(var v:mas;i1,i2:byte);{сортировка отрезка по возрастанию}
var i,j:byte;
x:integer;
begin
for i:=i1 to i2-1 do
for j:=i+1 to i2 do
if v[i]>v[j] then
begin
x:=v[i];
v[i]:=v[j];
v[j]:=x;
end;
end;
procedure SortUb(var v:mas;i1,i2:byte);{то же по убыванию}
var i,j:byte;
x:integer;
begin
for i:=i1 to i2-1 do
for j:=i+1 to i2 do
if v[i]<v[j] then
begin
x:=v[i];
v[i]:=v[j];
v[j]:=x;
end;
end;
var a:mas;
n,i,k,l:byte;
begin
clrscr;
randomize;
repeat
writeln(' Введите 3 числа: размер массива и 2 индекса,');
writeln('разбивающих массив на 3 части, в которых не менее 3х элементов');
write('Размер массива от 6 до ',nmax,' N=');readln(n);
write('Конец первого отрезка от 2 до ',n-4,' K=');readln(k);
write('Начало третьего отрезка от ',k+3,' до ',n-1,' L=');readln(l);
until (n in [6..nmax])and(l-k>2)and(k>1)and(l<n);
writeln('Массив:');
for i:=1 to n do
begin
a[i]:=random(50);
write(a[i]:4);
end;
writeln;
writeln;
SortVoz(a,1,k);
SortUb(a,l,n);
writeln('Сортировка первого отрезка по возрастанию, а третьего по убыванию');
for i:=1 to n do
begin
if i<=k then textcolor(10)
else if i>=l then textcolor(11)
else textcolor(12);
write(a[i]:4);
end;
textcolor(15);
readln
end.