Наивное решение на самом деле не так уж и плохо, сохраняйте отсортированный список из 1000 чисел в памяти и каждый раз, когда вы переходите к следующему индексу, удаляйте a[i-1]
из отсортированного списка и добавляйте a[i+999]
в отсортированный список.
Если у вас есть это, легко вычислить медиану в отсортированном списке.
Вопрос в том, как вы справляетесь лучше?