По каналу связи передаётся последовательность целых неотрицательных чисел — показания прибора, полученные с интервалом в 1 мин. в течение T мин. (T — целое число). Прибор измеряет количество атмосферных осадков, полученное регистратором за минуту, предшествующую моменту регистрации, и передаёт это значение в условных единицах измерения. Определите два таких переданных числа, чтобы между моментами их передачи прошло не менее K мин., а их произведение было минимально возможным. Укажите найденное произведение.
Даны два входных файла (файл A и файл B), каждый из которых в первой строке содержит натуральное число K — количество минут, которое должно пройти между двумя передачами показаний, а во второй — количество переданных показаний N (1 ≤ N ≤ 10 000 000, N > K). В каждой из следующих N строк находится одно целое неотрицательное число, не превышающее 1 000 000, обозначающее количество осадков за соответствующую минуту.
Выходные данные.
Запишите в ответе два числа: сначала значение искомой величины для файла A, затем — для файла B.
Типовой пример организации данных во входном файле:
3
5
15
10
200
30
1
При таких исходных данных минимально возможное произведение количество осадков равно 10 — это произведение осадков, выпавших на второй и пятой минутах.
Типовой пример имеет иллюстративный характер. Для выполнения задания используйте данные из прилагаемых файлов.
Ответ:
Решение. Последовательно будем проверять переданные числа, чтобы между моментами их передачи прошло не менее K мин., а их произведение было минимально возможным.
Приведём решение на языке Python.
f = open('27.txt')
k = int(f.readline())
n = int(f.readline())
a = [int(x) for x in f]
pr = 100000000
mini = 100000000
for i in range(n):
mini = min (mini, a[i])
if i + k < len(a):
pr = min(pr, mini * a[i+k])
print(pr)
В результате работы данного алгоритма при вводе данных из файла A ответ — 30, из файла B — 9.
Ответ: 30 9.
Примечание.
Путь к файлу необходимо указать согласно расположению файла на Вашем компьютере.
Приведём решение Ивана Гладких на языке Python.