Сильвер Тест задание на C ++ (12 модуль 13 задание) Дано N целых чисел. Найти второй по величине максимальный элемент последовательности (элемент, который бы стоял предпоследним, если бы входные данные отсортировали по неубыванию).
Входные данные
В первой строке задается число N (2<=N<=10⁴). Далее идут N строк, в каждой строке по одному целому числу, не превышающему 10⁵ по модулю.
Выходные данные
Выведите второй максимальный элемент.

Примеры
№ Входные данные Выходные данные
1 7
10
15
20
35
14
35
10 35
2 5
10
5
7
11
9 10
Запрещенные операторы: max; min; sort

5 Мая в 19:40
139 +1
0
Ответы
1

Для решения задачи без использования операторов max, min и sort, можно использовать простой алгоритм, который пройдет по всем элементам последовательности и найдет первый и второй по величине элементы. Мы будем использовать два переменных для хранения текущего максимального и второго максимального значения.

Вот пример реализации на C++:

#include <iostream>
#include <limits>
using namespace std;
int main() {
int N;
cin >> N;
// Инициализируем максимальное и второе максимальное числа
int firstMax = numeric_limits<int>::min();
int secondMax = numeric_limits<int>::min();
for (int i = 0; i < N; ++i) {
int num;
cin >> num; // Вводим число
// Если текущее число больше первого максимума
if (num > firstMax) {
secondMax = firstMax; // Сохраняем предыдущее максимальное значение
firstMax = num; // Обновляем первое максимальное значение
}
// Если текущее число меньше первого максимума, но больше второго
else if (num > secondMax && num < firstMax) {
secondMax = num; // Обновляем второе максимальное значение
}
}
cout << secondMax << endl; // Выводим второе максимальное число
return 0;
}Объяснение программы:Объявляем переменную N для хранения количества чисел и два целых числа firstMax и secondMax для хранения первого и второго максимальных значений.Считываем N чисел из входного потока.Для каждого прочитанного числа:
Если число больше текущего максимума (firstMax), обновляем secondMax (предыдущее значение первого максимума) и firstMax (новое максимальное значение).Если число меньше первого максимума, но больше второго максимума (secondMax), обновляем secondMax.В конце выводим secondMax, который содержит второй по величине элемент.

Запустив этот код, он корректно решит задачу с учетом всех заданных ограничений.

5 Мая в 19:40
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир