Эффективное программирование
По каналу для связи ежедневно раз в день в течение N дней (N - натуральное число) передается последовательность натуральных чисел - сумма выручки в некотором отделении банка за день.
Определите три таких переданных числа, чтобы между моментами передачи любых двух из них прошло не менее K дней, а сумма этих трех чисел была максимально возможной. Запишите в ответе найденную сумму.
Входные данные
Даны два входных файла (файл А и файл В), каждый из которых в первой строке содержит натуральное число K - минимальное количество дней, которое должно пройти между моментами передачи сумм выручки, а во второй - количество переданных значений N (1 < N < 10 000 000, N > K). В каждой из следующих N строк находится одно натуральное число, не превышающее 10 000 000, которое обозначает сумму выручки в отделении банка за соответствующий день.
Запишите в ответе два числа: сначала значение искомой величины для файла А, затем - для файла В.
Типовой пример организации данных во входном файле
2
6
15
26
30
23
23
20
При таких исходных данных искомая величина равна 69 - это сумма значений выручки, полученной во второй, четвёртый и шестой дни.
Типовой пример имеет иллюстративный характер. Для выполнения задания используйте данные из прилагаемых файлов.
Предупреждение: для обработки файла В не следует использовать переборный алгоритм, вычисляющий сумму для всех возможных вариантов, поскольку написанная по такому алгоритму программа будет выполняться слишком долго.