begin var a := ArrRandom(ReadInteger('n='), -50, 50);a.Println; var b := a.IndexesOf(t -> t.IsEven).ToArray; var b1 := a.Where(t -> t.IsEven).Sorted.ToArray; var b2 := ArrFill(a.Length, 1); if b.Length < 0 then begin a.Println; exit; end; for var i := 0 to b.Length - 1 do b2[b[i]] := b1[i]; for var i := 0 to a.Length - 1 do if b2[i].IsOdd then b2[i] := a[i]; b2.Println; end.
Берём двухмерный массив, заполненный числами. Проверяем каждое число, отрицательное ли оно. Добавляем его к одномерному массиву.