Дан одномерный массив из n целых чисел требуется написать функцию которая посчитает сколько раз в этом массиве встречается элементы следующий за максимальным в порядке убывания. формат входных данных массив должен быть введен с клавиатуры.
пример: 6 10 10 12 8 1 #элементы массива
2 # два раза встретился второй максимум
===== PascalABC.NET =====
function ЧислоВторыхМаксимумов(a: array of integer) :=
a.GroupBy(p -> p) // сгруппировали одинаковые
.Select(p -> (p.Count, p.Key)) // создали кортежи (кол, значение)
.OrderByDescending(p -> p[1]) // отсортировали по убыванию значений
.Skip(1) // пропустили первый элемент
.Take(1) // взяли только второй элемент
.Select(p -> p[0]); // выделили из кортежа количество
begin
var n:=ReadInteger('n ='); // длина массива
var a:=ArrRandom(n, 1, 10); // инициализируем массив
a.Println; // выводим его
ЧислоВторыхМаксимумов(a).Println // вызываем функцию, выводим результат
end.