PascalABC.NET 3.4.0, сборка 1671 от 31.05.2018Внимание! Если программа не работает, обновите версию!begin var n:=36; var a:=ArrRandom(n,-50,50); a.Println; var n4:=n div 4; var (s1,s2):=a.Select((v,i)->(v,i)).TakeLast(n4).Where(t->t[0]<>0) .Slice(1,2).OrderByDescending(t->1/t[0]).UnZipTuple; foreach var t in s1.ZipTuple(s2.Sorted) do a[t[1]]:=t[0]; a.Printlnend.