напишите программу, которая в последовательности целых чисел определяет сумму двух наибольших и сумму двух наименьших
max1 = 30001
max2 = 30001
min1 = -30001
min2 = -30001
for a in range 1 to 5:
for i in input().split():
s = int(i)
if a == 0:
min1 =0
min2 = 0
max1 = 0
max2 = 0
while a 1 != 0:
if a == 0:
break
if a >= max1:
max2 = max1
max1 = a
elif a >= max2:
max2 = a
if a 1 <= min1 and a != 0:
min2 = min1
min1 = a
elif a <= min2:
min2 = a
a = input().split()
if a == 0:
break
b = max1 + max2
c = min1 + min2
print(b, c)
Ответы (2 шт):
Автор решения: Zhihar
→ Ссылка
отсортировать список и всех делов
data = sorted(arr)
value1 = data[0] + data[1]
value2 = data[-1] + data[-2]
или так:
data = sorted(arr)
value1 = sum(data[:2])
value2 = sum(data[-2:])
Автор решения: Arty
→ Ссылка
В целом ваш алгоритм имеет правильный замысел и направление, я эту идею воплотил в моей работающей версии алгоритма. Представляю два алгоритма, первый ищет напрямую минимумы и максимумы, как ваш алгоритм, второй использует функцию сортировки.
import sys
a = list(map(int, sys.stdin.read().strip().split()))
min1, min2, max1, max2 = [None] * 4
for n in a:
if min1 is None or n < min1:
min1, min2 = n, min1
elif min2 is None or n < min2:
min2 = n
if max1 is None or n > max1:
max1, max2 = n, max1
elif max2 is None or n > max2:
max2 = n
print(max1 + max2, min1 + min2)
Вход:
864 394 776 911 430 41 265 988 523 497 414 940 802 849 310 991 488 366 597 913 929 223 516 142 288 143 773 97 633 818 256 931 545 722 829 616 923 150 317 101 747 75 920 870 700 338 483 573 103 362
Выход:
1979 116
Второй алгоритм, использующий сортировку:
import sys
a = list(map(int, sys.stdin.read().strip().split()))
a.sort()
min1, min2 = a[:2]
max2, max1 = a[-2:]
print(max1 + max2, min1 + min2)
Вход:
864 394 776 911 430 41 265 988 523 497 414 940 802 849 310 991 488 366 597 913 929 223 516 142 288 143 773 97 633 818 256 931 545 722 829 616 923 150 317 101 747 75 920 870 700 338 483 573 103 362
Выход:
1979 116
Входные числа были сгенерированы таким кодом:
import random
random.seed(0)
for i in range(50):
print(random.randrange(1000), end = ' ')