Не могу понять почему не решается на 100%

Два минимума

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

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

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

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

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

Решаю на Python, но не пойму что не так (31%)

код:

b = int(input())
a = [int(i) for i in input().split()]
a = list(set(a))
a.sort()
print(a[0], a[1])

пробовал также:

b = int(input())
a = [int(i) for i in input().split()]
print(min(a), end = ' ')
m = min(a)
while m in a:
    a.remove(min(a))
print(min(a)) 

но результат не меняется. Вопрос как сделать чтобы было 100%


Ответы (2 шт):

Автор решения: Zhihar

если я правильно понял украинский

n = int(input())
arr = sorted(list(map(int, input().split())))

a1 = arr[0]
a2 = a1

for i in arr:
    if i != a1:
        a2 = i
        break

print(a1, a2)

можно обойтись без сортировки и сделать за O(2n):

n = int(input())
arr = list(map(int, input().split()))

a1 = min(arr)
a2 = None

for i in arr:
    if i != a1 and (a2 is None or i < a2):
        a2 = i

print(a1, a2)

P.S.

есть мысли почему может не проходить текст

  1. возможно в последовательности передаются числа с плавающей запятой, тогда int надо поменять на float

     arr = list(map(float, input().split()))
    
  2. в последовательности указывается больше чисел, чем указано в первом параметре и тогда надо отрезать лишнее:

     n = int(input())
     arr = list(map(int, input().split()))[:n]
    
→ Ссылка
Автор решения: Danis

по каким-то причинам вход иногда бывает в две строки поэтому результат не верен. Данный код может принимать вход в несколько строк

n = int(input())
arr = []
while len(arr) < n:
    arr += map(int, input().split())

sort = sorted(set(arr))
print(*sort[:2])
→ Ссылка