# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
599388 | 2022-07-19T13:29:01 Z | jmyszka2007 | Furniture (JOI20_furniture) | C++17 | 1 ms | 724 KB |
#include <bits/stdc++.h> using namespace std; bool to[1010][1010]; bool from[1010][1010]; int cnt[2010]; int meb[1010][1010]; int n, m; void dfst(int x, int y) { if(x >= n || y >= m) { return; } to[x][y] = 0; if(!to[x - 1][y + 1] && to[x + 1][y]) { dfst(x + 1, y); } if(!to[x + 1][y - 1] && to[x][y + 1]) { dfst(x, y + 1); } if(from[x][y]) { cnt[x + y]--; } } void dfsf(int x, int y) { if(x <= 1 || y <= 1) { return; } from[x][y] = 0; if(!from[x - 1][y + 1] && from[x - 1][y]) { dfsf(x - 1, y); } if(!from[x + 1][y - 1] && from[x][y - 1]) { dfsf(x, y - 1); } if(to[x][y]) { cnt[x + y]--; } } int main() { scanf("%d%d", &n, &m); for(int i = 1; i <= n; i++) { for(int j = 1; j <= m; j++) { scanf("%d", &meb[i][j]); } } to[1][1] = 1; from[n][m] = 1; for(int i = 1; i <= n; i++) { for(int j = 1; j <= m; j++) { if(!meb[i][j]) { if(to[i - 1][j] || to[i][j - 1]) { to[i][j] = 1; } } } } for(int i = n; i >= 1; i--) { for(int j = m; j >= 1; j--) { if(!meb[i][j]) { if(from[i + 1][j] || from[i][j + 1]) { from[i][j] = 1; } } } } for(int i = 1; i <= n; i++) { for(int j = 1; j <= n; j++) { if(to[i][j] && from[i][j]) { cnt[i + j]++; } } } int t; scanf("%d", &t); while(t--) { int a, b; scanf("%d%d", &a, &b); if(cnt[a + b] > 1 || !to[a][b] || !from[a][b]) { printf("%d\n", 1); if(to[a][b]) { dfst(a, b); } if(from[a][b]) { dfsf(a, b); } } else { printf("%d\n", 0); } } }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Incorrect | 1 ms | 724 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Incorrect | 1 ms | 724 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |