#include <bits/stdc++.h>
using namespace std;
const int N = 1005;
int n, m, q, a[N][N], good[N][N], cnt[2*N], in[N][N], out[N][N];
void add(int r, int c) {
cnt[r+c]--;
good[r][c] = 0;
if(r > 1 && --out[r-1][c] == 0) add(r-1, c);
if(c > 1 && --out[r][c-1] == 0) add(r, c-1);
if(r < n && --in[r+1][c] == 0) add(r+1, c);
if(c < m && --in[r][c+1] == 0) add(r, c+1);
}
signed main() {
cin >> n >> m;
for(int i=1; i<=n; i++) {
for(int j=1; j<=m; j++) {
cnt[i+j]++;
good[i][j] = 1;
in[i][j] = (i > 1) + (j > 1);
out[i][j] = (i < n) + (j < m);
}
}
for(int i=1; i<=n; i++) {
for(int j=1; j<=m; j++) {
cin >> a[i][j];
if(a[i][j]) add(i, j);
}
}
cin >> q;
while(q--) {
int r, c;
cin >> r >> c;
cout << (!good[r][c] || cnt[r+c] > 1) << '\n';
if(!good[r][c] || cnt[r+c] > 1) add(r, c);
}
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |