#include <iostream>
using namespace std;
const int N = 6;
int A[N][N];
// اقرا كويس يرايق السطر الجاي
// sum((i, j) (k, l)) where (k, l) is the bottom right
int sum_range(int i, int j, int k, int l) {
return A[k][l] - A[k][j - 1] - A[i - 1][l] + A[i - 1][j - 1];
}
void accumSum2D() {
// المصفوفة الأصلية (1-based indexing)
int input[N][N] = {
{0, 0, 0, 0, 0, 0},
{0, 1, 2, 2, 4, 1},
{0, 3, 4, 1, 5, 2},
{0, 2, 3, 3, 2, 4},
{0, 4, 1, 5, 4, 6},
{0, 6, 3, 2, 1, 3},
};
// نسخ input إلى A
for (int i = 0; i < N; i++)
for (int j = 0; j < N; j++)
A[i][j] = input[i][j];
// -----------------------
// Step 1: تجميع الصفوف
// -----------------------
for (int i = 1; i < N; i++)
for (int j = 1; j < N; j++)
A[i][j] += A[i][j - 1];
/*
A بعد جمع الصفوف:
[0, 0, 0, 0, 0, 0]
[0, 1, 3, 5, 9, 10]
[0, 3, 7, 8, 13, 15]
[0, 2, 5, 8, 10, 14]
[0, 4, 5, 10, 14, 20]
[0, 6, 9, 11, 12, 15]
*/
// -----------------------
// Step 2: تجميع الأعمدة
// -----------------------
for (int j = 1; j < N; j++)
for (int i = 1; i < N; i++)
A[i][j] += A[i - 1][j];
/*
A بعد جمع الأعمدة (المصفوفة التجميعية النهائية):
[0, 0, 0, 0, 0, 0]
[0, 1, 3, 5, 9, 10]
[0, 4, 10, 13, 22, 25]
[0, 6, 15, 21, 32, 39]
[0, 10, 20, 31, 46, 59]
[0, 16, 29, 42, 58, 74]
*/
// -----------------------
// Step 3: حساب مجموع المستطيل من (2,3) إلى (3,5)
// -----------------------
// المنطقة:
// [1, 5, 2]
// [3, 2, 4]
// المجموع = 1 + 5 + 2 + 3 + 2 + 4 = 17
int result = sum_range(2, 3, 3, 5); // = 39 - 15 - 10 + 3 = 17 ✅
cout << result << "\n"; // الناتج النهائي: 17
}
int main() {
accumSum2D();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY29uc3QgaW50IE4gPSA2OwppbnQgQVtOXVtOXTsKCi8vINin2YLYsdinINmD2YjZitizINmK2LHYp9mK2YIg2KfZhNiz2LfYsSDYp9mE2KzYp9mKCiAvLyBzdW0oKGksIGopIChrLCBsKSkgd2hlcmUgKGssIGwpIGlzIHRoZSBib3R0b20gcmlnaHQKaW50IHN1bV9yYW5nZShpbnQgaSwgaW50IGosIGludCBrLCBpbnQgbCkgewogIHJldHVybiBBW2tdW2xdIC0gQVtrXVtqIC0gMV0gLSBBW2kgLSAxXVtsXSArIEFbaSAtIDFdW2ogLSAxXTsKfQoKdm9pZCBhY2N1bVN1bTJEKCkgewogIC8vINin2YTZhdi12YHZiNmB2Kkg2KfZhNij2LXZhNmK2KkgKDEtYmFzZWQgaW5kZXhpbmcpCiAgaW50IGlucHV0W05dW05dID0gewogICAgICB7MCwgMCwgMCwgMCwgMCwgMH0sCiAgICAgIHswLCAxLCAyLCAyLCA0LCAxfSwKICAgICAgezAsIDMsIDQsIDEsIDUsIDJ9LAogICAgICB7MCwgMiwgMywgMywgMiwgNH0sCiAgICAgIHswLCA0LCAxLCA1LCA0LCA2fSwKICAgICAgezAsIDYsIDMsIDIsIDEsIDN9LAogIH07CgogIC8vINmG2LPYriBpbnB1dCDYpdmE2YkgQQogIGZvciAoaW50IGkgPSAwOyBpIDwgTjsgaSsrKQogICAgZm9yIChpbnQgaiA9IDA7IGogPCBOOyBqKyspCiAgICAgIEFbaV1bal0gPSBpbnB1dFtpXVtqXTsKCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAvLyBTdGVwIDE6INiq2KzZhdmK2Lkg2KfZhNi12YHZiNmBCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBmb3IgKGludCBpID0gMTsgaSA8IE47IGkrKykKICAgIGZvciAoaW50IGogPSAxOyBqIDwgTjsgaisrKQogICAgICBBW2ldW2pdICs9IEFbaV1baiAtIDFdOwoKICAvKgogICAgQSDYqNi52K8g2KzZhdi5INin2YTYtdmB2YjZgToKICAgIFswLCAgMCwgICAwLCAgIDAsICAgMCwgICAwXQogICAgWzAsICAxLCAgIDMsICAgNSwgICA5LCAgMTBdCiAgICBbMCwgIDMsICAgNywgICA4LCAgMTMsICAxNV0KICAgIFswLCAgMiwgICA1LCAgIDgsICAxMCwgIDE0XQogICAgWzAsICA0LCAgIDUsICAxMCwgIDE0LCAgMjBdCiAgICBbMCwgIDYsICAgOSwgIDExLCAgMTIsICAxNV0KICAqLwoKICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIC8vIFN0ZXAgMjog2KrYrNmF2YrYuSDYp9mE2KPYudmF2K/YqQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgZm9yIChpbnQgaiA9IDE7IGogPCBOOyBqKyspCiAgICBmb3IgKGludCBpID0gMTsgaSA8IE47IGkrKykKICAgICAgQVtpXVtqXSArPSBBW2kgLSAxXVtqXTsKCiAgLyoKICAgIEEg2KjYudivINis2YXYuSDYp9mE2KPYudmF2K/YqSAo2KfZhNmF2LXZgdmI2YHYqSDYp9mE2KrYrNmF2YrYudmK2Kkg2KfZhNmG2YfYp9im2YrYqSk6CiAgICBbMCwgIDAsICAgMCwgICAwLCAgIDAsICAgMF0KICAgIFswLCAgMSwgICAzLCAgIDUsICAgOSwgIDEwXQogICAgWzAsICA0LCAgMTAsICAxMywgIDIyLCAgMjVdCiAgICBbMCwgIDYsICAxNSwgIDIxLCAgMzIsICAzOV0KICAgIFswLCAxMCwgIDIwLCAgMzEsICA0NiwgIDU5XQogICAgWzAsIDE2LCAgMjksICA0MiwgIDU4LCAgNzRdCiAgKi8KCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAvLyBTdGVwIDM6INit2LPYp9ioINmF2KzZhdmI2Lkg2KfZhNmF2LPYqti32YrZhCDZhdmGICgyLDMpINil2YTZiSAoMyw1KQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogIC8vINin2YTZhdmG2LfZgtipOgogIC8vIFsxLCA1LCAyXQogIC8vIFszLCAyLCA0XQogIC8vINin2YTZhdis2YXZiNi5ID0gMSArIDUgKyAyICsgMyArIDIgKyA0ID0gMTcKCiAgaW50IHJlc3VsdCA9IHN1bV9yYW5nZSgyLCAzLCAzLCA1KTsgLy8gPSAzOSAtIDE1IC0gMTAgKyAzID0gMTcg4pyFCgogIGNvdXQgPDwgcmVzdWx0IDw8ICJcbiI7ICAvLyDYp9mE2YbYp9iq2Kwg2KfZhNmG2YfYp9im2Yo6IDE3Cn0KCmludCBtYWluKCkgewogIGFjY3VtU3VtMkQoKTsKICByZXR1cm4gMDsKfQo=