Максимальная сумма трёх показаний
По каналу связи передаётся последовательность целых чисел — показания прибора. В течение $N$ минут прибор ежеминутно регистрирует значение напряжения в электрической сети и передаёт его на сервер. Определите три таких переданных числа, чтобы между моментами передачи любых двух из них прошло не менее $K$ минут, а сумма этих трёх чисел была максимально возможной. Даны два входных файла — файл А и файл B. В первой строке каждого файла записано натуральное число $K$, во второй — количество переданных показаний $N$ ($1 \leq N \leq 10\,000\,000$, $N > K$). В следующих $N$ строках записаны целые числа, по модулю не превышающие $10\,000\,000$. Для файла А допускается переборный алгоритм, но для файла B необходимо использовать алгоритм, работающий достаточно быстро на $N$ до $10\,000\,000$. Типовой пример: при $K=2$ и последовательности $150, -150, 20, -200, -300, 0$ искомая сумма равна $170$.
Условие как в банке ФИПИ — открыть и сверить
| ||||||
| | ||||||
Формат: число или слово без единиц измерения; дробную часть отделяйте запятой.
1Мягкая — с чего смотретьуровень 1 из 3
Как хранить максимум суммы двух элементов, если второй элемент должен находиться не ближе чем на $K$ позиций от текущего?
2Наводящая — какие числа считатьуровень 2 из 3
При проходе слева направо поддерживайте максимум одного элемента и максимум суммы двух элементов среди уже допустимых позиций.
3Прямая — фактически решениеуровень 3 из 3
Для текущего элемента $a_i$ сначала добавьте в структуры элемент или пару с индексом $i-K$, затем проверьте сумму трёх элементов. Максимум можно находить за $O(N)$ времени и $O(1)$ дополнительной памяти.
