Nie potrafię znaleźć powodu SIGNAL 11 w programie rozwiązującym zadanie

0

Cześć!
Robię takie zadanko: https://ki.staszic.waw.pl/task.php?name=figury
Moje rozwiązanie to prosty DFS który oblicza obówd, przy 3 ostatnich testach (zgaduje że dla jakiś dużych danych) dostaje komunikat "Przechwycono sygnał 11". Tylko dlaczego? gdzie w tym kodzie wykraczam poza zadeklarowaną pamięć?

#include <bits/stdc++.h>

using namespace std;

#define ll long long
#define ull unsigned long long

const int INF = 1e9 + 7, MAXN = 2e3 + 7;
vector<vector<bool>> seen(MAXN, vector<bool>(MAXN));

ll circuit = 0;

void dfs(int i, int j, int n, int m, vector<string>& board){
    seen[i][j] = true;

    vector<int> x = {1, -1, 0, 0};
    vector<int> y = {0, 0, 1, -1};

    for (int d = 0; d < 4; d++){
        int ii = i + x[d], jj = j + y[d];
        if (ii < 0 || ii >= n || jj < 0 || jj >= m || board[ii][jj] == '.')
            circuit++;
        else if (seen[ii][jj] == false)
            dfs(ii, jj, n, m, board);
    }
}

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int n, m;
    cin >> n >> m;
    vector<string> board(n);
    for (auto& row : board)
        cin >> row;
    int x, y;
    cin >> x >> y;
    x--; y--;

    if (board[x][y] == '.'){
        cout << 0 << "\n";
        return 0;
    }

    dfs(x, y, n, m, board);

    cout << circuit << "\n";

    return 0;
}

Sprawdzałem już dla wygenerowanych przeze mnie testów, i z fssantize ale wszystko działało bez zarzutów.

3

wykraczasz w stosie.

4
#define ll long long
#define ull unsigned long long

Zawsze jak to widzę to dostaję dreszczy (najwyraźniej ktoś mniej kompetentny napisał kurs/tutorial/..., który zrobił się popularny).
Makra to samo zło i trzeba ich unikać tak długo jak się da (szczególnie takich).
Czyż to nie jest bardziej rozsądne:

using ll = long long;
using ull = unsigned long long;

1 użytkowników online, w tym zalogowanych: 0, gości: 1