Module: (C++) For loop operator. Typical tasks


Problem

13 /16


Second high

Theory Click to read/hide

Task:  Given N numbers. Find the second largest maximum element of the sequence..

This task has two interpretations.
For example, if we are given a set of numbers: 10 15 20 35 14 35 10, then what should be the answer?
By "second largest maximum element" or simply "second maximum", we can understand:
1) the value that would have stood in the penultimate place if we had all the values ​​arranged (sorted) in non-decreasing order (each next one is greater than or equal to the previous one). Then for the considered set of numbers the answer will be the value 35
2) the value of the element, of which only the maximum is greater. Then the answer is 20
If there is only one maximum element in the set of numbers (all the others are smaller), then both interpretations coincide, and the answer will be the same for both cases, otherwise the answer will be different.

Consider the first case (the algorithm will be written in pseudocode).
To find the answer, we will use two variables:
1) maximum1 - maximum value (first maximum)
2) maximum2 - second maximum (our answer)
If the range of variation of the values is known, then as the initial values we take a number that is obviously less than the lower boundary of the range (for example, for a range from -1000 to 1000 - take the number -1001)
If the range of values is unknown, then the first two input numbers can be written in the initial values of the variables maximum 1 and maximum 2, and then compare these two variables

input N //amount of numbers
input a, b
maximum1 = а
maximum2 = b
if b > a then
    maximum1 = b
    maximum2 = a
Next, we consider all the other elements (the first 2 have already been viewed, so we will start from the 3rd)
for i <-- 3 to n
    input а
    if а > maximum1 //a value greater than the maximum1
      then 
        maximum2 = maximum1 //the former first high will become the second
        maximum1 = а  //the first high will be a new element
      else
       // next element no more than maximum1
       // it must be compared with a value of maximum 2
        if а > maximum2 then
            maximum2 = а  // accept it as a new value maximum 2
                          // maximum1 in this case does not change
Try to implement this algorithm yourself

Problem

Given N integers. Find the second largest element of the sequence (the element that would be the penultimate if the input data were sorted non-decreasingly)

Input:
the first line sets the number N (\(2<=N<=10^5\))
then there are N lines, one integer in each line
Output:
print the second maximum element

Examples
Input Output
1 7
10
15
20
35
14
35
10
35
2 5
10
5
7
11
9
10