Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define ii pair<int,int>
- #define fi first
- #define sc second
- using namespace std;
- int n, m;
- int a[55][55], b[55][55];
- vector<ii> l = {
- {-1, -1}, {-1, 0}, {-1, 1},
- { 0, -1}, { 0, 1},
- { 1, -1}, { 1, 0}, { 1, 1},
- };
- void print() {
- for (int i = 1; i <= n; i++)
- for (int j = 1; j <= m; j++)
- cout << b[i][j] << " \n"[j == m];
- }
- signed main() {
- #ifdef _DEBUG
- freopen("_in" , "r", stdin );
- //freopen("_out", "w", stdout);
- #endif
- ios::sync_with_stdio(0); cin.tie(0);
- cin >> n >> m;
- for (int i = 1; i <= n; i++)
- for (int j = 1; j <= m; j++)
- cin >> a[i][j];
- memset(b, 0xff, sizeof(b));
- for (int i = 0; i <= n + 1; i++) b[i][0] = b[i][m + 1] = 0;
- for (int i = 0; i <= m + 1; i++) b[0][i] = b[n + 1][i] = 0;
- int T = 8;
- while(T--)
- for (int i = 1; i <= n; i++)
- for (int j = 1; j <= m; j++) {
- if (a[i][j] == 0) for (auto d : l) b[i + d.fi][j + d.sc] = 0;
- else {
- int no = 0, po = 0;
- for (auto d : l) {
- if (b[i + d.fi][j + d.sc] == -1) no++;
- if (b[i + d.fi][j + d.sc] == 1) po++;
- }
- if (po + no == a[i][j]) for (auto d : l)
- if (b[i + d.fi][j + d.sc] == -1) b[i + d.fi][j + d.sc] = 1;
- if (po == a[i][j]) for (auto d : l)
- if (b[i + d.fi][j + d.sc] == -1) b[i + d.fi][j + d.sc] = 0;
- }
- }
- print();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement