5059. Два минимума

 

Найдите два различных наименьших элемента в числовой последовательности.

 

Вход. В первой строке находится количество элементов n (3 ≤ n ≤ 1000) последовательности. Далее заданы n чисел, каждое из которых не превышает 2 * 109 по абсолютному значению.

 

Выход. Выведите в возрастающем порядке два различных наименьших элемента последовательности. Известно, что они всегда существуют.

 

Пример входа

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

7

2 10 2 3 -1 5 -1

-1 2

 

 

РЕШЕНИЕ

массивы

 

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

Прочитаем входную последовательность в массив. Найдем минимальный элемент min1. Вторым минимальным элементом min2 будет наименьший элемент массива, не равный min1.

 

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

Входную последовательность храним в массиве m.

 

int m[1001];

 

Читаем входной массив и находим минимальный элемент min1.

 

scanf("%d",&n);

min1 = min2 = 2000000000;

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

{

  scanf("%d",&m[i]);

  if (m[i] < min1) min1 = m[i];

}

 

Вторым минимальным элементом min2 будет наименьший элемент массива, не равный min1.

 

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

  if (m[i] < min2 && m[i] != min1) min2 = m[i];

 

Выводим два различных наименьших элемента последовательности.

 

printf("%d %d\n",min1,min2);

 

Java реализация

 

import java.util.*;

 

public class Main

{

  public static void main(String[] args)

  {

    Scanner con = new Scanner(System.in);

    int min1, min2;

    min1 = min2 = 2000000000;

   

    int n = con.nextInt();

    int m[] = new int[n];

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

    {

      m[i] = con.nextInt();

      if (m[i] < min1) min1 = m[i];

    }

 

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

      if (m[i] < min2 && m[i] != min1) min2 = m[i];

 

    System.out.println(min1 + " " + min2);

    con.close();

  }

}

 

Python реализация

 

import sys

n = int(input())

lst = [];

for line in sys.stdin:

  for var in line.split():

    lst.append(int(var))

 

min1 = min(lst)

min2 = sys.maxsize

for x in lst:

   if (x < min2 and x != min1): min2 = x

print(min1, min2)