Module: (C++) Opérateur de boucle For. Tâches typiques


Problem

13 /16


Deuxième maximum

Theory Click to read/hide

Tâche

N nombres sont donnés. Trouvez le deuxième plus grand élément d'une séquence.

Ce problème permet deux interprétations.
Par exemple, si on nous donne un ensemble de nombres : \(10\ 15\ 20\ 35\ 14\ 35\ 10\), alors quelle devrait être la réponse ?
Sous le "deuxième plus grand élément" ou simplement "deuxième maximum", peut être compris comme :
1) la valeur qui serait à l'avant-dernière place si nous organisions (triions) toutes les valeurs dans un ordre non décroissant (chacune suivante est supérieure ou égale à la précédente). Ensuite, pour l'ensemble de nombres considéré, la réponse sera la valeur 35 ;
2) la valeur de l'élément, qui est supérieure uniquement au maximum. Alors la réponse est 20.
S'il n'y a qu'un seul élément maximum dans l'ensemble des nombres (tous les autres sont inférieurs), alors les deux interprétations sont les mêmes, et la réponse sera la même pour les deux cas, sinon la réponse sera différente.

Considérons le premier cas (nous écrirons l'algorithme sur pseudocode).
Pour trouver la réponse, nous allons utiliser deux variables :
1) maximum1 - valeur maximale (premier maximum) ;
2) maximum2 - deuxième maximum (notre réponse).

Si la plage de valeurs change est connue, alors comme valeurs initiales, nous prenons un nombre évidemment inférieur à la limite inférieure de la plage (par exemple, avec une plage de -1000 à 1000 - prenez le numéro -1001)
Si la plage de valeurs est inconnue, vous pouvez écrire les deux premiers nombres d'entrée dans les valeurs initiales des variables max1 et max2, puis les comparer deux variables. entrée N //nombre de nombres entrée a, b max1 = un max2 = b si b > un, alors     max1 = b     max2 = un
Ensuite, nous considérons tous les autres éléments (les 2 premiers ont déjà été visionnés, nous allons donc commencer par le 3ème) nc pour i de 3 à n saisir un si un > maximum1 // il y avait une valeur supérieure à maximum1 Ce max2 = max1 // l'ancien premier haut devient le deuxième max1 = a //le nouvel élément sera le premier maximum sinon //élément suivant pas plus que max1 // il doit être comparé avec la valeur maximum2 si un > maximum 2 Ce max2 = a // le prendre comme nouvelle valeur max2 // max1 ne change pas dans ce cas Tous Tous kts
Essayez d'implémenter cet algorithme vous-même.

Problem

Entiers N donnés. Trouvez le deuxième plus grand élément de la séquence (l'élément qui serait l'avant-dernier si l'entrée était triée par ordre non décroissant).

Entrée
La première ligne spécifie le nombre N (\(2<=N<=10^4\)). Suivi de N lignes, chaque ligne un entier n'excédant pas 105 modulo. 

Mentions légales
Imprimer le deuxième élément maximum.

 

Exemples
# Entrée Sortie
1 7
10
15
20
35
14
35
10
35
2 5
10
5
7
11
9
10