'Running into unexpected error while running C++ code on CLion IDE

below is my c++ code

#include <iostream>
#include <algorithm>

using namespace std;

int main() {
    int trials = 0;

    cin >> trials;
    int c = 1;
    while (trials--) {

        string grid[51];
        int r = 0;
        cin >> r;
        int n = r;
        int m = 0;
        for (int i = 0; i < r; i++) {
            string s;
            cin >> s;
            m = s.size();
            grid[i] = s;
        }

        if (n < 3 || m < 3) {
            cout << "Case #" << c++ << ": " << 0 << endl;
            continue;
        }

        int rowCount[51][51] = {0};

        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                rowCount[i + 1][j + 1] = rowCount[i + 1][j];
                if (grid[i].at(j) == '0')
                    rowCount[i + 1][j + 1] += 1;
            }
        }

        int columnCount[51][51] = {0};
        for (int j = 0; j < m; j++) {
            for (int i = 0; i < n; i++) {
                columnCount[i + 1][j + 1] = columnCount[i][j + 1];
                if (grid[i].at(j) == '0')
                    columnCount[i + 1][j + 1] += 1;
            }
        }

        int table[51][51][51][51] = {0};
        for (int h = 3; h <= n; h++) {
            for (int w = 3; w <= m; w++) {
                for (int i = 1; i + h - 1 <= n; i++) {
                    for (int j = 1; j + w - 1 <= m; j++) {

                        int i1 = i + h - 1;
                        int j1 = j + w - 1;

                        int vals[] = {table[i][j][i1][j1],
                                      table[i + 1][j][i1][j1],
                                      table[i][j + 1][i1][j1],
                                      table[i][j][i1 - 1][j1],
                                      table[i][j][i1][j1 - 1]};

                        table[i][j][i1][j1] = *max_element(vals, vals + 5);

//                        if (grid[i - 1].substr(j - 1, j1).find('.') == string::npos ||
//                            grid[i1 - 1].substr(j - 1, j1).find('.') == string::npos) {
//                            continue;
//                        }

                        if (rowCount[i][j1] - rowCount[i][j - 1] != j1 - j + 1 ||
                            rowCount[i1][j1] - rowCount[i1][j - 1] != j1 - j + 1) {
                            continue;
                        }

                        if (columnCount[i1][j] - columnCount[i - 1][j] != i1 - i + 1 ||
                            columnCount[i1][j1] - columnCount[i - 1][j1] != i1 - i + 1) {
                            continue;
                        }

                        if (table[i + 1][j + 1][i1 - 1][j1 - 1] + 1 > table[i][j][i1][j1]) {
                            table[i][j][i1][j1] = table[i + 1][j + 1][i1 - 1][j1 - 1] + 1;
                        }


                    }
                }
            }
        }
        cout << "Case #" << c++ << ": " << table[1][1][n][m] << endl;


    }

    return 0;
}

On running this code in Clion IDE (on my windows 11 system) I get the following error

Process finished with exit code -1073741571 (0xC00000FD)

This is basically a code for solving a competitive programming question. As soon as I execute the code I get the error. It doesn't even let me input trials.

I am not sure what the reason is for this. I believe it is to do with the memory available for execution. I have tried to change the memory settings for the CLion IDE but I still get the same error. The code above is long but you can just copy/paste it into your own environment and maybe have a look? It works alright on ideone (online compiler). Could anyone help with this?

c++


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source