مهمة برمجية: بناء متكرر لشجرة متوازنة من المجاميع التجميعية

C++ Hard recursion

مهمة «مهمة برمجية: بناء متكرر لشجرة متوازنة من المجاميع التجميعية»

<div>مصفوفة من الأعداد الصحيحة A بحجم N. المطلوب بناء شجرة ثنائية بشكل استدعائي، حيث تحتوي كل عقدة على المجموع التراكمي للعناصر في الفترة [l, r)، بالإضافة إلى المؤشرين l و r. الجذر يمثل الفترة [0, N). قم بتقسيم الفترة إلى نصفين بشكل استدعائي (النصف الأيسر [l, mid)، والنصف الأيمن [mid, r))، حتى يصبح طول الفترة 1. لكل عقدة، احسب مجموع العناصر في فترتها. اطبع الشجرة بترتيب اجتياز العمق أولاً (pre-order): لكل عقدة، اطبع l و r والمجموع. استخدم الاستدعاء الذاتي. N <= 100، الأعداد في المصفوفة قيمتها المطلقة <= 10^6.</div>

تنسيق الإدخال

السطر الأول: عدد صحيح 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