Submission

Status:

[xSSSSSSSSSSSSSS]

Subtask/Task Score:

{0/100}

Score: 0

User: iij

Problemset: fireball

Language: cpp

Time: 0.003 second

Submitted On: 2025-10-22 22:34:24

#include <iostream>

using namespace std;
int n, m, c=0, dirs[4][2] = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}};

void dfsSet0(bool *v, int x, int y) {
    *(v+x*m+y) = 0;
    c--;
    for (auto &d : dirs) {
        int nx = x + d[0], ny = y + d[1];
        if (nx >= 0 && ny >= 0 && nx < n && ny < m && *(v+nx*m+ny)) dfsSet0(v, nx, ny);
    }
}

int main() {
    int q;
    cin >> n >> m >> q;
    bool *v;

    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            bool t;
            cin >> t;
            *(v+i*m+j) = t;
            if (t) c++;
        }
    }

    while (q--)
    {
        int x, y;
        cin >> x >> y;
        x--;y--;
        if (*(v+x*m+y)) dfsSet0(v, x, y);
        cout << c << "\n";
    }
}