Не могу понять почему не решается на 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 шт):
если я правильно понял украинский
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.
есть мысли почему может не проходить текст
возможно в последовательности передаются числа с плавающей запятой, тогда
intнадо поменять наfloatarr = list(map(float, input().split()))в последовательности указывается больше чисел, чем указано в первом параметре и тогда надо отрезать лишнее:
n = int(input()) arr = list(map(int, input().split()))[:n]
по каким-то причинам вход иногда бывает в две строки поэтому результат не верен. Данный код может принимать вход в несколько строк
n = int(input())
arr = []
while len(arr) < n:
arr += map(int, input().split())
sort = sorted(set(arr))
print(*sort[:2])