Два минимума

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

Входные данные

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

Выходные данные

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

Алгоритм решения задачи

  • Оператором Distinct удаляем дубли элементов;
  • Сортируем список по возрастанию;
  • Получаем первые 2 элемента списка.

Решение

using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main(string[] args)
    {
        var n = int.Parse(Console.ReadLine());
        var p = new List<long>();
        
        while (n > p.Count())
        {
            p.AddRange(Array.ConvertAll(Console.ReadLine().Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries),
            s => long.Parse(s)));
        }

        p = p.Distinct().OrderBy(x => x).Take(2).ToList();        

        Console.WriteLine(string.Join(" ", p));
    }
}

Смотрите также: