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