Дана последовательность целых чисел. Рассматриваются все её непрерывные подпоследовательности, в которых содержится чётное количество положительных чисел. Найдите наибольшую сумму такой последовательности.
Входные данные. Даны два входных файла(файл А и файл В), каждый из которых содержит в первой строке количество чисел (
). Каждая из следующих
строк файлов содержит одно число, по модулю не превышающее
В ответе укажите два числа через пробел: сначала искомое значение для файла А, затем — для файла B.
Решение 1 (неэффективное)
f = open("27A.txt")
n = int(f.readline())
a = [int(f.readline()) for x in range(n)]
ans = -1000000000
for i in range(n):
cnt, sum = 0, 0
for j in range(i, n):
sum += a[j]
if a[j] > 0:
cnt += 1
if cnt % 2 == 0:
ans = max(ans, sum)
print(ans)
Решение 2 (эффективное)
file = open("27B.txt")
n = int(file.readline())
s = 0
k = 0
mps = [0, 10000000]
ans = -1000000
for i in range(n):
x = int(file.readline())
s += x
if x > 0:
k += 1
ans = max(ans, s - mps[k % 2])
mps[k % 2] = min(mps[k % 2], s)
print(ans)