1957. Серебряная медаль

 

Спортсмен Василий участвовал в соревнованиях по хоккейболу и получил в личном зачёте серебряную медаль. Известно, что участники, набравшие одинаковое количество очков, награждаются одинаковыми наградами. Также известно, что были разыграны золотые, серебряные и бронзовые медали. В задаче не спрашиваются правила хоккейбола. Необходимо только определить, сколько очков набрал Василий.

 

Вход. В первой строке задано количество спортсменов n (2 ≤ n ≤ 1000), участвовавших в соревнованиях. Во второй строке приведены n целых чисел – результаты соревнования.

 

Выход. Вывести одно число – результат Василия.

 

Пример входа

Пример выхода

5

4 3 3 1 2

3

 

 

РЕШЕНИЕ

циклы

 

Анализ алгоритма

Золотом награждаются участники, набравшие максимальное количество очков. Серебром награждаются участники, набравшие наибольшее количество очков, меньшее максимума. В заданной последовательности требуется найти максимальное число, отличное от наибольшего.

 

Пример

В данном примере

·        участники, набравшие 4 очка, получают золотую медаль;

·        участники, набравшие 3 очка, получают серебряную медаль;

 

Реализация алгоритма

Читаем входное значение n.

 

scanf("%d", &n);

 

Количество очков золотой и серебряной медали находим в переменных gold и silver.

 

gold = silver = -1;

for (i = 0; i < n; i++)

{

  scanf("%d", &val);

 

Если текущее количество очков val больше gold, то за val очков теперь дают золотую медаль, а за gold очков дают серебряную.

 

  if (val > gold) silver = gold, gold = val;

 

Если текущее количество очков val лежит между silver и gold не включительно, то за val очков дают серебряную медаль.

 

  else if ((val > silver) && (val < gold)) silver = val;

}

 

Выводим ответ.

 

printf("%d\n", silver);