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 он тогда просто меняет значение именно той переменной которой он больше
day := 1; m := Dat [1]
нц для k от 2 до 10
если Dat[k] >= m то
m := Dat[k]; day := k
все
кц
Что происходит? Сначала day = 1, m = Dat[day]. Затем в цикле для каждого k сравнивается Dat[k] с m, и если Dat[k] не меньше его, то в day записывается k, а в m - Dat[k]. Значит, после завершения цикла в переменной m будет записано максимальное из всех значений Dat[i], а в day - номер дня, в который в последний раз был достигнут максимум.
Максимальное значение равно 7, в последний раз появилось в Dat[9], поэтому day = 9.
Команда вывод day выводит на экран значение переменной day, которое, как мы уже выяснили, равно 9.
ответ. 9.