(№ 4848) На вход программе подается последовательность целых чисел и натуральное число K. Особым числом называется отрицательное число, заканчивающееся на 3. Рассматриваются все непрерывные подпоследовательности исходной последовательности, содержащие ровно K особых чисел. Программа должна вывести одно число – максимальную сумму элементов такой подпоследовательности. Гарантируется, что в последовательности существует хотя бы K особых чисел.
Входные данные. Даны два входных файла (файл A и файл B), каждый из которых содержит в первой строке количество чисел N (100 ≤ N ≤ 5000000) и натуральное число K. Каждая из следующих N строк файлов содержит одно целое число, не превышающее по модулю 10000. Гарантируется, что сумма любой подпоследовательности исходной последовательности не превышает 109.
Пример входного файла:
14 1 -1 -1 2 -3 3 -13 1 -1 6 -23 8 23 8 1
В этом наборе три особых числа: –3, –13 и –23. Можно выбрать подпоследовательность (6, –23, 8, 23, 8, 1), которая имеет сумму 23 и содержит одно особое число. Ответ для приведенного примера: 23.
В ответе укажите два числа: сначала искомое значение для файла А, затем для файла B.
k=11
a=[int(x) for x in open('27_B_4848.txt')]
d=[0]*k
ma=-100000000
n=0
s=0
mi=1000000000000
for i in range(len(a)):
s=s+a[i]
if a[i]<0 and abs(a[i])%10==3:
n=n+1
d[ost]=mi
mi=10000000000000
ost=n%k
if n==k:
ma=max(ma,s)
if d[ost]==0:
d[ost]=s
else:
ma=max(ma,s-d[ost])
mi=min(s,mi)
print(ma)
Для корректной работы файла В необходимо убрать первую строчку из файла. Для файла А: меняем значение k=3 и также убираем первую строчку (ибо не хочется заморачиваться со считыванием) 🙂
20139 38739
сайт Полякова