Дан целочисленный массив из n элементов. Элементы массива могут принимать целые положительные значения от 1 до 10 000 включительно (такие числа будет вводить пользователь, это проверять не нужно). Напишите программу, которая находит разность максимального из чётных элементов массива, оканчивающихся на 2 и минимального из нечётных элементов массива, оканчивающихся на 5, затем уменьшает все элементы массива, которые больше этой разности, на величину этой разности, и выводит изменённый массив в обратном порядке в одну строку.
34, 22, 17, 42, 25, 10, 15, 45
программа должна получить массив
7, 22, 17, 15, 25, 10, 15, 18
и вывести:
18, 15, 10, 25, 15, 17, 22, 7
const N = 8;
var i,min,max: integer;
var a: array [1..N] of integer;
begin
write('Введите массив: ');
min:=0;
max:=0;
for i:=1 to N do
begin
readln(a[i]);
if (a[i] mod 2 = 0) and (a[i] mod 10 = 2) then
begin
if (max=0) then max:=a[i]
else if (a[i]>max) then max:=a[i];
end;
if (a[i] mod 2 <> 0) and (a[i] mod 10 = 5) then
begin
if (min=0) then min:=a[i]
else if (a[i]<min) then min:=a[i];
end;
end;
for i:=N downto 1 do
begin
if (a[i]>(max-min)) then a[i]:=a[i]-(max-min);
write(a[i],' ');
end;
end.
// PascalABC.NET
begin
var n := ReadInteger;
var a := ReadArrInteger(n);
var d :=
a.Where(p -> p.IsEven and (p mod 10 = 2)).Max -
a.Where(p -> p.IsOdd and (p mod 10 = 5)).Min;
a.Transform(p -> p > d ? p - d : p);
a.Reverse.Print
end.