Ну так блят, логично же, что в таких задачах O(n) это именно дополнительно используемое место, потому что ты не можешь работать со списком, который в нигде
Ну, нет, не логично, в олимпиадном программировании ограничения на память - это всегда ограничения на память твоего приложения.
Например, список может приходить из stdin, ты можешь запрашивать следующее число 10**6 раз, но хранить не можешь.