// PascalABC.NET 3.2, сборка 1417 от 28.03.2017
// Внимание! Если программа не работает, обновите версию!
begin
var a:=ArrRandom(5,-50,50); a.Println;
var b:=a.Select((x,i)->(x,i)).OrderByDescending(xi->xi[0]).
Select(xi->xi[1]).Take(3);
foreach var i in b do a[i]:=i+1;
a.Println;
end.
Пример
39 -22 -29 49 -18
1 -22 -29 4 5