Top.Mail.Ru
Ответы

Сильвер Тест задание на 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

По дате
По Рейтингу
Аватар пользователя
Мыслитель
1мес
123456789101112131415161718192021222324252627
 #include <iostream> 
#include <climits> 
 
int main() { 
    int N; 
    if (!(std::cin >> N) || N < 2 || N > 10000) return 1; 
 
    int first = INT_MIN, second = INT_MIN; 
    bool has_second = false; 
 
    while (N--) { 
        int num; 
        if (!(std::cin >> num)) return 1; 
 
        if (num > first) { 
            second = first; 
            first = num; 
            has_second = (second != INT_MIN); 
        }  
        else if (num > second && num != first) { 
            second = num; 
            has_second = true; 
        } 
    } 
 
    std::cout << (has_second ? second : first); 
}