Найти максимум числа

Доброе утро, задание было в том что нужно ввести первое число которое >0, потом начать вводить следующие числа и оборвать вводить когда введено число меньше 0. И вот нужно вывести максимальное число из всех введённых по формуле (an+n), т.е если на 4-м было введено число 3, а первым число 5, то максимальным будет 3+4, а не 5+1. Ну я такой сделал программу считает. А препод говорит:"хрень переделывай без списков", вот только я не понимаю как ёё без списков организовать

spisok = []
a = int(input('-->> '))
while True:
    if a>=0:
        spisok.append(a)
        a = int(input('-->> '))
        
    else:
        break
k = 1
mx = 0
for i in spisok:
    if i < 0:
        break
    s = i + k
    if s > mx:
        mx = s
    k += 1
print(mx)

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

Автор решения: Danis

попробуйте так:

max1, index = 0, 1

while True:
    num = int(input())
    if num < 0:
        break
    if num + index > max1:
        max1 = index + num
    index += 1

print(max1) 
→ Ссылка
Автор решения: Zhihar

Если c использованием списков, то решение в 1 строчку:

seq = [10, 2, 5, 8, 3, 1, 5] # список значений накопили через while и input

res = sorted([obj for obj in enumerate(seq)], key=lambda i: i[0] + i[1])[-1:]

print(f"value: {res[0][1]}, pos: {res[0][0] + 1}")

Если без использования списков

max_value, max_pos = 0, 0
pos = 1
while True:
    value = int(input())
    if value < 0:
        break
    (max_value, max_pos) = (value, pos) if pos + value > max_value else (max_value, max_pos)
    pos += 1

print(f"value: {max_value}, pos: {max_pos}")

Во втором варианте можно 2 строчки запихнуть в 1 - не очень наглядно конечно, но в 1 строчку :)))

(max_value, max_pos, pos) = (value, pos, pos + 1) if pos + value > max_value else (max_value, max_pos, pos + 1)

В итоге наверное самый компактный вариант:

value, pos = 0, 0
max_value, max_pos = 0, 0

while value >= 0:
    value, pos = int(input()), pos + 1
    if value >= 0:
        max_value, max_pos = (value, pos) if pos + value > max_value else (max_value, max_pos)

print(max_value, max_pos)
→ Ссылка