Submission

Status:

[PPPPPPPPPPPPPPP]

Subtask/Task Score:

{100/100}

Score: 100

User: Test

Problemset: fireball

Language: cpp

Time: 0.002 second

Submitted On: 2026-03-25 15:26:49

#include <bits/stdc++.h>
using namespace std;
//14.40-15.16
vector<vector<char>> grid;
vector<vector<bool>> visited;
int n,m;
int di[4] = {-1,1,0,0};
int dj[4] = {0,0,1,-1};
int find(int i,int j){
    if(i<0 || j<0 || i>=n || j>=m) return 0;
    if(grid[i][j]=='0') return 0;
    if(visited[i][j]) return 0;

    grid[i][j]='0';
    visited[i][j] = true;

    int area = 1;
    for(int k=0;k<4;k++){
        area +=  find(i+di[k],j+dj[k]);
    }

    return area;
}
int main(){
    ios_base::sync_with_stdio(0),cin.tie(0);
    int q;
    cin >> n >> m >> q;
    grid.resize(n,vector<char>(m));
    visited.assign(n,vector<bool>(m,false));
    int one = 0;
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            cin >> grid[i][j];
            if(grid[i][j]=='1') one++;
        }
    }
    //cout << one;
    for(int i=0;i<q;i++){
        int x,y;
        cin >> x >> y;
        one -= find(x-1,y-1);
        cout << one << "\n";
    }
}

/*
3 3 1
0 0 0  
1 0 1
0 1 1
3 3
1
*/