Дана последовательность целых чисел. Необходимо найти максимально возможную сумму её непрерывной подпоследовательности, в которой количество положительных чётных элементов кратно k = 30.
Входные данные.
Первая строка входного файла содержит целое
Вам даны два входных файла
Ответ:
Приведём решение на языке Python.
f = open("27-B.txt")
n = int(f.readline())
lefts = [0 for i in range(30)]
maxsum = 0
for i in range(30):
lefts[i] = 2 * 1000000000
count = 0
sum = 0
for i in range(1, n + 1):
num = int(f.readline())
sum = sum + num
if (num % 2 == 0) and (num > 0):
count = count + 1
d = count % 30
if sum < lefts[d]:
lefts[d] = sum
maxsum = max(maxsum, sum - lefts[d])
print(maxsum)
Ответ: 97011 24932.
Примечание.
Путь к файлу необходимо указать согласно расположению файла на Вашем компьютере.
Приведём другое решение.
Для нахождения искомой суммы найдём сумму всех чисел в файле и, если количество чётных положительных чисел этой суммы не будет
Будем последовательно считывать числа из файла.
Приведём решение задачи на языке Pascal.
var
i, n, num, count, d: integer;
sum, maxsum: int64;
lefts: array[0..29] of int64;
f: text;
begin
assign(f,'C:\27-B.txt');
reset(f);
readln(f, n);
for i := 0 to 29 do begin
lefts[i] := 2 * 1000000000;
end;
count := 0;
sum := 0;
for i := 1 to n do begin
readln(f, num);
sum := sum + num;
if (num mod 2 = 0) and (num > 0) then count := count + 1;
d := count mod 30;
if sum < lefts[d] then lefts[d] := sum;
maxsum := Max(maxsum, sum - lefts[d]);
end;
writeln(maxsum);
end.
В результате работы данного алгоритма при вводе данных из

