Let it check the register for 4 elements:
{1,3,4,5, // from original array
4,7,9, // sum of 2 consecutive elements
8,12, // sum of 3
13} // sum of 4
, N sum (N-1). , : N + (N-1) + (N-2) +... 1 - N * (1 + N)/2
int* createSumArray(int* arr, int size)
{
int ti = 0;
int* ta = new int[size*(size+1)/2];
for (int s = 1; s <= size; ++s)
{
for (int si = 0; si < size + 1 - s; ++si)
{
ta[ti] = 0;
for (int i = si; i < si + s; ++i)
ta[ti] += arr[i];
++ti;
}
}
return ta;
}
. ideone