Module: (C ++) لمشغل الحلقة. المهام النموذجية


Problem

13 /16


الثانية كحد أقصى

Theory Click to read/hide

مهمة يتم إعطاء أرقام N. أوجد ثاني أكبر عنصر في تسلسل.

هذه المسألة تسمح بتفسيرين.
على سبيل المثال ، إذا حصلنا على مجموعة من الأرقام: \ (10 ​​\ 15 \ 20 \ 35 \ 14 \ 35 \ 10 \) ، فماذا يجب أن تكون الإجابة ؟
تحت "ثاني أكبر عنصر" أو ببساطة "الحد الأقصى الثاني" ، يمكن فهمها على النحو التالي:
1) القيمة التي ستكون في المكان قبل الأخير إذا رتبنا (فرزنا) جميع القيم بترتيب غير تنازلي (كل قيمة تالية أكبر من القيمة السابقة أو مساوية لها). ثم بالنسبة لمجموعة الأرقام المدروسة ، ستكون الإجابة هي القيمة 35 ؛
2) قيمة العنصر وهي أكبر من الحد الأقصى فقط. ثم الجواب هو 20.
إذا كان هناك عنصر واحد فقط كحد أقصى في مجموعة الأرقام (كل العناصر الأخرى أقل) ، فسيكون كلا التفسيرين متماثلين ، وستكون الإجابة واحدة لكلتا الحالتين ، وإلا ستكون الإجابة مختلفة.

ضع في اعتبارك الحالة الأولى (سنكتب الخوارزمية في pseudocode ).
للعثور على الإجابة ، سنستخدم متغيرين:
1) max1 - القيمة القصوى (الحد الأقصى الأول) ؛
2) max2 - الثانية القصوى (إجابتنا).

إذا كان نطاق تغيير القيم معروفًا ، فحينئذٍ كقيم أولية نأخذ رقمًا من الواضح أنه أقل من الحد الأدنى للنطاق (على سبيل المثال ، مع نطاق من -1000 إلى 1000 - خذ الرقم -1001 )
إذا كان نطاق القيم غير معروف ، فيمكنك كتابة أول رقمين للإدخال في القيم الأولية للمتغيرين max1 و max2 ، ثم المقارنة بينهما متغيرين. <قبل> إدخال N // عدد الأرقام المدخلات أ ، ب max1 = أ max2 = ب إذا ب & GT. أ ، إذن نبسب ؛ نبسب ؛ max1 = ب نبسب ؛ نبسب ؛ max2 = أ
بعد ذلك ، نأخذ في الاعتبار جميع العناصر الأخرى (تم عرض أول 2 بالفعل ، لذلك سنبدأ من الثالث) <قبل> nc لأني من 3 إلى n إدخال أ إذا أ & GT. max1 // كانت هناك قيمة أكبر من max1 الذي - التي max2 = max1 // القمة الأولى السابقة تصبح الثانية max1 = a // سيكون العنصر الجديد هو الحد الأقصى الأول خلاف ذلك // العنصر التالي لا يزيد عن max1 // يجب مقارنتها بالقيمة القصوى 2 إذا أ & GT. بحد أقصى 2 الذي - التي max2 = a // اعتبرها على أنها القيمة الجديدة max2 // لا يتغير max1 في هذه الحالة الجميع الجميع kts
حاول تنفيذ هذه الخوارزمية بنفسك.

Problem

إعطاء أعداد صحيحة N . ابحث عن ثاني أكبر عنصر في التسلسل (العنصر الذي سيكون بعد الأخير إذا تم فرز الإدخال بترتيب غير تنازلي).

إدخال
يحدد السطر الأول الرقم N ( \ (2 & lt؛ = N & lt؛ = 10 ^ 4 \) ). & nbsp؛ متبوعًا بـ N سطور ، كل سطر & nbsp ؛ عدد صحيح واحد لا يتجاوز 10 5 modulo. & nbsp؛

بصمة
اطبع ثاني أقصى عنصر.

نبسب ؛

أمثلة <الجسم>
# إدخال الإخراج
1 7
10
15
20
35
14
35
10
35
2 5
10
5
7
11
9
10