// PascalABC.NET 3.2, сборка 1467 от 02.06.2017
// Внимание! Если программа не работает, обновите версию!
begin
var a:=ArrRandom(ReadInteger('n='),-50,50); a.Println;
var x:=a.Where(x->x.IsOdd).ToArray;
for var i:=1 to x.Count-1 do begin
var (j,l):=(i-1,x[i]);
while (j>=0) do
if x[j]>l then begin x[j+1]:=x[j]; j-=1 end
else break;
x[j+1]:=l
end;
var j:=0;
for var i:=0 to x.Length-1 do begin
while a[j].IsEven do j+=1;
a[j]:=x[i]; j+=1
end;
a.Println;
end.
Пример
n= 15
49 10 3 44 -25 31 -18 -9 29 43 -24 -45 -19 45 -19
-45 10 -25 44 -19 -19 -18 -9 3 29 -24 31 43 45 49