제출 #1309442

#제출 시각아이디문제언어결과실행 시간메모리
1309442VMaksimoski008Furniture (JOI20_furniture)C++20
0 / 100
5 ms1852 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...