Рекурсивное построение сбалансированного дерева из префиксных сумм

C++ Сложный recursion

Задача «Рекурсивное построение сбалансированного дерева из префиксных сумм»

Дан массив целых чисел A размера N. Требуется рекурсивно построить бинарное дерево, где каждый узел содержит префиксную сумму элементов на отрезке [l, r), а также индексы l и r. Корень соответствует отрезку [0, N). Рекурсивно делите отрезок пополам (левая половина [l, mid), правая [mid, r)), пока длина отрезка не станет 1. Для каждого узла вычислите сумму элементов на его отрезке. Выведите дерево в порядке обхода в глубину (pre-order): для каждого узла выведите l, r и сумму. Используйте рекурсию. N <= 100, числа в массиве по модулю <= 10^6.

Формат ввода

Первая строка: целое N (1 <= N <= 100). Вторая строка: N целых чисел A[i] (-10^6 <= A[i] <= 10^6).

Формат вывода

Для каждого узла в порядке pre-order выводите три числа: l, r, sum. Каждый узел на отдельной строке. Если отрезок пустой (l == r), не выводите ничего.

Примеры

Пример 1

ВВОД
4 1 2 3 4
ВЫВОД
0 4 10 0 2 3 0 1 1 1 2 2 2 4 7 2 3 3 3 4 4

Пример 2

ВВОД
2 -5 5
ВЫВОД
0 2 0 0 1 -5 1 2 5
main.cpp