m1=0
m2=0
m3=0
x=10
while x!=0:
x=int(input())#вводим число
if m1<x:
m3=m2
m2=m1
m1=x
elif x>m2 and x>m3 and x<m1:
m3=m2
m2=x
elif x<m2 and x<m1 and x>m3:
m3=x
print(m1,m2,m3,sep=" ")
вот std алгоритм заключается в том что у нас три переменных и мы после нахождения максимума все переменные сдвигаем назад то есть m1 становится m2, m2 становится m3 а m1 присваивается новый максимум и так же тут случаи когда m2 или m3 больше старых но мешьше m1 он тогда просто меняет значение именно той переменной которой он больше
"вещественные числа p, b1, ..., bn, которые не превосходят по модулю 105" - К чему это условие? Если это условие включить в код, то вещественное число, такое как 123.45 уже больше модуля 105, а значит либо этого условия нету, раз уж у тебя в примере 123.45 включается в сумму, которая больше p, либо нет условия с модулем.
Я закомментировал условие проверки числа на с модулем 105 и программа работает так, как описано в примере.
Если захочешь добавить условие с модулем, то убери # и поставь табуляцию(несколько пробелов) перед s.append(k)
n = int(input()) while not 1<=n<=1000: #Ввод n, если не входит в диапазон, то ждет ввода снова n = int(input()) s = [] p = float(input()) for i in range(n): k = float(input()) # if k < abs(105): s.append(k) sum = 0 for i in s: if i > p: sum += i print(sum)