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