Module: (C++) Operatore ciclo For. Compiti tipici


Problem

13 /16


Secondo massimo

Theory Click to read/hide

Compito

Sono dati N numeri. Trova il secondo elemento più grande in una sequenza.

Questo problema consente due interpretazioni.
Ad esempio, se ci viene fornito un insieme di numeri: \(10\ 15\ 20\ 35\ 14\ 35\ 10\), quale dovrebbe essere la risposta ?
Sotto il "secondo elemento più grande" o semplicemente "secondo massimo", può essere inteso come:
1) il valore che sarebbe al penultimo posto se disponessimo (ordinando) tutti i valori in ordine non decrescente (ciascuno successivo è maggiore o uguale al precedente). Quindi per l'insieme di numeri considerato la risposta sarà il valore 35;
2) il valore dell'elemento, che è maggiore solo del massimo. Allora la risposta è 20.
Se c'è un solo elemento massimo nell'insieme dei numeri (tutti gli altri sono inferiori), entrambe le interpretazioni sono le stesse e la risposta sarà la stessa per entrambi i casi, altrimenti la risposta sarà diversa.

Considera il primo caso (scriveremo l'algoritmo su pseudocodice).
Per trovare la risposta, utilizzeremo due variabili:
1) maximum1 - valore massimo (primo massimo);
2) maximum2 - secondo massimo (la nostra risposta).

Se il range di valori cambia è noto, allora come valori iniziali prendiamo un numero che è ovviamente minore del limite inferiore del range (ad esempio, con un range da -1000 Da a 1000 - prendi il numero -1001)
Se l'intervallo di valori è sconosciuto, puoi scrivere i primi due numeri di input nei valori iniziali delle variabili max1 e max2, quindi confrontarli due variabili.
input N //numero di numeri
ingresso a, b
massimo1 = a
massimo2 = b
se b > un, quindi
    massimo1 = b
    massimo2 = a

Successivamente, consideriamo tutti gli altri elementi (i primi 2 sono già stati visualizzati, quindi inizieremo dal 3°)
nc per i da 3 a n
    ingresso A
    se un > massimo1 //c'era un valore maggiore di massimo1
      Quello
        max2 = max1 //ex primo massimo diventa secondo
        max1 = a //il nuovo elemento sarà il primo massimo
      Altrimenti
        //elemento successivo non più di max1
        // deve essere confrontato con il valore massimo2
        se un > massimo 2
          Quello
            max2 = a //prenderlo come nuovo valore max2
                           // max1 non cambia in questo caso
        Tutto
    Tutto
kts

Prova a implementare questo algoritmo da solo.

Problem

Dati N numeri interi. Trova il secondo elemento più grande della sequenza (l'elemento che sarebbe il penultimo se l'input fosse ordinato in ordine non decrescente).

Inserimento
La prima riga specifica il numero N (\(2<=N<=10^4\)). Seguito da N righe, ciascuna riga un numero intero non superiore a 105 modulo. 

Impressum
Stampa il secondo elemento massimo.

 

Esempi
# Input Uscita
1 7
10
15
20
35
14
35
10
35
2 5
10
5
7
11
9
10