Ошибка у тебя в подсчёте суммы, посчитать ее мы можем даже не используя if'а, просто с двух циклов.
#include<iostream>
#include<ctime>
#define SIZE 10
#define R_MIN -1
#define R_MAX 1
using namespace std;
int main()
{
srand(time(NULL));
int arr[SIZE][SIZE];
int s = 0;
for (int i = 0; i < SIZE; ++i)
for (int j = 0; j < SIZE; ++j)
arr[i][j] = rand() % (R_MAX - R_MIN + 1) + R_MIN;
for (int i = 0; i != SIZE; i++)
for (int j = i + 1; j != SIZE; j++)
s += arr[i][j];
for (int i = 0; i < SIZE; ++i) {
for (int j = 0; j < SIZE; ++j)
{
cout << arr[i][j] << " ";
}
cout << endl;
}
cout << "Summa = " << s;
return 0;
}
N=2^i
Отсюда следует, что i=6
k=600
i=6 бит
I=k*I
I=600*6=3600бит
3600/8=450байт