Module: (C++) Döngü operatörü için. Tipik görevler


Problem

13 /16


İkinci maksimum

Theory Click to read/hide

Görev

N numara verilir. Bir dizideki en büyük ikinci öğeyi bulun.

Bu problem iki yoruma izin verir.
Örneğin, bize bir dizi sayı verilirse: \(10\ 15\ 20\ 35\ 14\ 35\ 10\), o zaman cevap ne olmalıdır? ?
"İkinci en büyük öğe" altında veya basitçe "ikinci maksimum", şu şekilde anlaşılabilir:
1) tüm değerleri azalan olmayan bir düzende düzenlersek (sıralarsak) sondan bir önceki yerde olacak değer (bir sonraki her biri bir öncekinden büyük veya ona eşittir). Ardından, dikkate alınan sayı kümesi için cevap 35 değeri olacaktır;
2) sadece maksimumdan daha büyük olan elemanın değeri. O zaman cevap 20'dir.
Sayı kümesinde yalnızca bir maksimum öğe varsa (diğerleri daha azdır), o zaman her iki yorum da aynıdır ve cevap her iki durum için de aynı olacaktır, aksi halde cevap farklı olacaktır.

İlk durumu ele alalım (algoritmayı sözde kod).
Cevabı bulmak için iki değişken kullanacağız:
1) maksimum1 - maksimum değer (ilk maksimum);
2) maksimum2 - ikinci maksimum (bizim cevabımız).

Değer aralığının değiştiği biliniyorsa, başlangıç ​​​​değerleri olarak, aralığın alt sınırından açıkça daha az olan bir sayı alırız (örneğin, -1000 aralığında) ila 1000 - sayıyı al -1001)
Değer aralığı bilinmiyorsa, ilk iki giriş sayısını max1 ve max2 değişkenlerinin başlangıç ​​değerlerine yazabilir ve ardından bunları karşılaştırabilirsiniz. iki değişken.
giriş N //sayı sayısı
a, b girişi
maks1 = bir
maks2 = b
b > ise; bir, o zaman
    maks1 = b
    maks2 = bir

Sonra, diğer tüm unsurları göz önünde bulunduruyoruz (ilk 2 zaten görüntülendi, bu yüzden 3.'den başlayacağız)
3'ten n'ye i için nc
    bir girin
    eğer bir > maximum1 //max1'den büyük bir değer vardı
      O
        max2 = max1 //önceki ilk yüksek ikinci olur
        max1 = a //yeni eleman ilk maksimum olacak
      aksi takdirde
        //sonraki eleman max1'den fazla değil
        // maximum2 değeri ile karşılaştırılması gerekiyor
        eğer bir > maksimum 2
          O
            max2 = a //yeni değer olarak al max2
                           // max1 bu durumda değişmez
        Tüm
    Tüm
kt

Bu algoritmayı kendiniz uygulamaya çalışın.

Problem

Verilen N tam sayıları. Dizinin en büyük ikinci öğesini bulun (giriş azalan düzende sıralansaydı sondan sonraki öğe).

Girdi
İlk satır, N (\(2<=N<=10^4\)) sayısını belirtir). Ardından N satır, her satır 105 modulo'yu geçmeyen bir tamsayı. 

Künye
İkinci maksimum elemanı yazdırın.

 

Örnekler

# Girdi Çıktı
1 7
10
15
20
35
14
35
10
35
2 5
10
5
7
11
9
10