Явно есть улучшение по расходу памяти (словарь мог состоять из порядка n
2 записей), но "читаемось" кода "пострадала"
Можно попробовать запустить этот код на файле "А27-01_002" (файл В), но выполнение программы потребует
очень много времени.
Нетрудно заметить проблему, которая "сильно тормозит" процесс - это восьмая строка с оператором k = sum(A[i : j+1])
Опытный пользователь сказажет "надо использовать префиксные суммы"
Поясним, о чем речь
\(S_i^j\ =\ A_i\ +\dots\ A_j =\ A_i\ +\dots\ A_j +( A_1+\dots+A_{i-1}) - ( A_1+\dots+A_{i-1}) = \\=(A_1+\dots+A_{i-1})\ +\ A_i\ +\dots\ A_j - ( A_1+\dots+A_{i-1}) =\\ = (A_1+\dots+A_j) - ( A_1+\dots+A_{i-1}) =\ S_1^j - S_1^{i-1} \ \ \ (S_1^0 =0) \)
(при вычислениях применили принцип "прибавления нуля"
)
Значит, если предварительно вычислить значения
\(S_1^k \) для
\(k = 0,1, \dots,n\) , то получиться "ускорить" программу
Изменения проведем в блоке ВВОДА данных и заменим вычисление суммы
(заменим имя списка A на SA, чтобы "отловить" ошибку при "неполной модификации")