В заданной последовательности неотрицательных чисел найти максимальную сумму двух её элементов. Python

n = int(input())
max1 = max2 = summa = 0
for i in range(n):
    x = int(input())
    if x > max1 and x != max2:
        max1 = x
    if x > max2 and x != max1:
        max2 = x

if max1+max2 > summa:
    summa = max1+max2
print(summa)

В чем ошибка?


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

Автор решения: Zhihar
if x > max2 and x != max1:
    max2 = x

вы считаете, что в последовательности 3 3 2 два максимальных числа не могут быть одинаковыми?

if x > max1:
    max1, max2 = x, max1
elif x > max2:
    max2 = x

вот так надо - если x больше максимального числа, то максимальное число никуда не девается, оно присваивается второму максимальному числу (меньшему из двух максимальных)

→ Ссылка
Автор решения: Danis
max1, max2 = 0, 0
for _ in range(int(input())):
    n = int(input())
    if n > max2:
        max2, max1 = sorted((max1, n))

print(max1 + max2) 

без if

max1, max2 = 0, 0
for _ in range(int(input())):
    n = int(input())
    _, max1, max2= sorted((max1, max2, n))

print(max1 + max2) 
→ Ссылка