Дано натуральное число , затем дана последовательность
целых чисел. Необходимо найти максимально возможную сумму её непрерывной подпоследовательности, в которой количество положительных нечётных элементов кратно
.
Входные данные:
Даны два входных файла (файл А и файл В), каждый из которых содержит в первой строке одно целое число — количество чисел. Каждая из следующих
строк содержит целое число, меньшее 10000.
В ответе укажите два числа: сначала значение для файла , затем для файла
.
Неэффективное решение
f = open("7A.txt")
n = int(f.readline())
ans = 0
a = []
for i in range(n):
a.append(int(f.readline()))
for i in range(n):
s = 0
counter = 0 # счетчик полож. нечет. эл-ов
for j in range(i, n):
s += a[j]
if (a[j] > 0) and (a[j] % 2 != 0):
counter += 1
if counter % 50 == 0:
ans = max(ans, s)
print(ans)
Эффективное решение
f = open("7B.txt")
n = int(f.readline())
minpref = [0] + [100000000] * 49 # преф суммы по кол-ву полож.неч. чисел
ans, counter, s = 0, 0, 0
for i in range(n):
x = int(f.readline())
s += x
if x > 0 and x % 2 != 0:
counter += 1
ans = max(ans, s - minpref[counter % 50])
minpref[counter % 50] = min(s, minpref[counter % 50])
print(ans)